gpt4 book ai didi

android - URLConnection 错误

转载 作者:行者123 更新时间:2023-11-29 16:09:12 26 4
gpt4 key购买 nike

我只是想了解一下 JacksonJson 库。为此,我尝试将 Places API 中的 JSON 数据转换为字符串。

我的 key 有效(我在浏览器和另一个应用程序中进行了测试),但出现错误。这是代码:

protected Void doInBackground(Void... params)
{
try
{
URL googlePlaces = new URL(
"https://maps.googleapis.com/maps/api/place/textsearch/json?query=Cloud&types=food&language=en&sensor=true&location=33.721314,73.053498&radius=10000&key=<Key>");
URLConnection tc = googlePlaces.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
tc.getInputStream()));

StringBuffer sb = new StringBuffer();

while ((line = in.readLine()) != null)
{
sb.append(line);
}

Log.d("The Line: ", "" + line);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}

这是 logcat 的输出:

02-14 12:29:07.407: D/libc-netbsd(16792): getaddrinfo: maps.googleapis.com  return error = 0x8 >>
02-14 12:29:07.813: D/libc-netbsd(16792): getaddrinfo: maps.googleapis.com get result from proxy >>
02-14 12:29:08.706: D/libc-netbsd(16792): getaddrinfo: maps.googleapis.com return error = 0x8 >>

我的 list 中有互联网许可。我不知道为什么这不起作用,或者这些错误是什么。

最佳答案

这不是点击 URL 的正确方法。您将其参数传递给 url 只是为了将字节写入输出流,然后请求 url

   URL googlePlaces = new URL("https://maps.googleapis.com/maps/api/place/textsearch/json?query=Cloud&types=food&language=en&sensor=true&location=33.721314,73.053498&radius=10000&key=<Key>");

这是点击 URL 的正确方法。

  url=new URL("https://maps.googleapis.com/maps/api/place/textsearch/json");

然后将所有的参数放到params Map中;

        Map<String, String> params = new HashMap<String, String>();
params.put("query","Cloud");
params.put("types", "foods");....like this put all

然后构建 body ..

    StringBuilder bodyBuilder = new StringBuilder();
Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
// constructs the POST body using the parameters
while (iterator.hasNext()) {
Entry<String, String> param = iterator.next();
bodyBuilder.append(param.getKey()).append('=')
.append(param.getValue());
if (iterator.hasNext()) {
bodyBuilder.append('&');
}
}
String body = bodyBuilder.toString();

这里的Body包含了所有你不能通过URL直接请求的参数,但是你已经把它写到OutputStream中,然后请求并写入字节

               byte[] bytes = body.getBytes();
OutputStream out = conn.getOutputStream();
out.write(bytes);
out.close();

关于android - URLConnection 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com