You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java调用WeatherAPI时HTTP请求参数传递失败的问题求助

解决WeatherAPI请求中q参数缺失的问题

你的问题出在q参数的传递方式上:WeatherAPI要求q(城市查询参数)作为URL查询字符串参数传递,而不是请求头字段。你把q: London写进请求头,服务器根本识别不到这个参数,所以返回了Parameter q is missing的错误。

修正方案

把q参数添加到请求URL的查询字符串中,API密钥key可以选择放在查询字符串里,或者继续保留在请求头中,两种方式都支持。

方式1:key和q都放在URL查询字符串

修正后的代码:

import java.io.*;
import java.util.*;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.net.URLEncoder;

public class WeatherService {

    public static void main(String[] args) throws IOException {

        Properties mavenProperties = new Properties();
        InputStream propertiesStream = WeatherService.class.getResourceAsStream("/maven.properties");
        mavenProperties.load(propertiesStream);

        final String API_KEY =  mavenProperties.getProperty("api.key");
        // 对城市名称做URL编码,避免空格等特殊字符导致解析错误
        final String CITY = URLEncoder.encode("London", "UTF-8");

        SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        try (SSLSocket socket = (SSLSocket)factory.createSocket("api.weatherapi.com", 443)) {
            socket.startHandshake();
            Writer w = new OutputStreamWriter(socket.getOutputStream());
            // 将q和key参数添加到URL查询字符串
            w.write("GET /v1/current.json?q=" + CITY + "&key=" + API_KEY + " HTTP/1.1\r\n");
            w.write("Host: api.weatherapi.com\r\n");
            w.write("\r\n");
            w.flush();
            InputStream in = socket.getInputStream();
            int b;
            while ((b = in.read()) != -1)
                System.out.write(b);
        }
    }
}

方式2:key保留在请求头,q放在URL查询字符串

如果想继续用请求头传递API密钥,只需要调整URL部分:

w.write("GET /v1/current.json?q=" + CITY + " HTTP/1.1\r\n");
w.write("Host: api.weatherapi.com\r\n");
w.write("Key: " + API_KEY + "\r\n");
w.write("\r\n");

额外提示

  • 城市名称如果包含空格、特殊字符,一定要用URLEncoder.encode()做URL编码,否则会导致参数解析失败。
  • 手动构建HTTP请求时,注意请求行和请求头的格式:每行必须以\r\n结尾,最后一个请求头后要加一个空的\r\n表示请求头结束。

内容的提问来源于stack exchange,提问作者dSofarts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:45:31