Android中OkHttp请求参数未添加导致Google Geocoding API请求失败
问题根源及解决办法
- Google Geocoding API仅支持GET请求传递参数,不接受POST方式的表单提交。你用
FormBody.Builder构建的是POST请求的表单参数,这些参数不会被API识别,自然会返回“缺少必要参数”的错误。 - 另外,
request.toString()只打印baseUrl是因为POST请求的参数存放在请求体里,不会拼在URL上,这是正常现象,但核心问题还是请求方式用错了。
修正方案
把请求方式改成GET,将address、key、region这些参数直接通过URL查询字符串传递,用OkHttp的HttpUrl.Builder构建带参数的URL更规范:
// 构建带参数的请求URL HttpUrl url = new HttpUrl.Builder() .scheme("https") .host("maps.googleapis.com") .addPathSegment("maps") .addPathSegment("api") .addPathSegment("geocode") .addPathSegment("json") .addQueryParameter("address", 你的地址参数) .addQueryParameter("key", 你的API密钥) .addQueryParameter("region", 你的区域参数) .build(); // 构建GET请求 Request request = new Request.Builder() .url(url) .build(); // 默认就是GET请求,可省略.get()
这样参数会被正确传递给API,就能正常获取经纬度数据了。
内容的提问来源于stack exchange,提问作者zxcisnoias
相关产品推荐
相关产品推荐

