gpt4 book ai didi

android - 为 Google Maps API v2 Android 发布流媒体指示

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:07 25 4
gpt4 key购买 nike

因此,我的应用程序的一部分构建了一个导航方向字符串,然后尝试解析 JSON 并在我的 map 上绘制折线路线。我首先使用 Location 变量或 Locale 常量构建我的字符串。我最终得到了类似

https://maps.googleapis.com/maps/api/directions/json?origin=Full Frame Documentary Film 
Festival, Durham, 27701&destination=601 W Peace St, Raleigh,27605&sensor=false&key={API_KEY}
  • 没有新行(我添加它是为了便于阅读)并且 {API_KEY} 是我的实际 api key 。

我遇到的问题是,当我将该 URL 字符串传递给此 downloadUrl(String urlString) 方法时

private String downloadUrl(String urlString) throws IOException {
Log.d(TAG, "Downloaded string = " + urlString);
String data = "";
InputStream stream = null;
HttpURLConnection urlConnection = null;
try {

// Display our JSON in our browser (to show us how we need to implement our parser)
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(urlString));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

URL url = new URL(urlString);

// Create a http connection to communicate with url
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();

// read in our data
stream = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
StringBuffer sb = new StringBuffer();

// read in our data in, and append it as a single data string
String line = "";
while ((line = br.readLine()) != null) {
Log.d(TAG,"url download stream: " + line);
sb.append(line);
}
data = sb.toString();
br.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
Log.d(TAG, "Downloaded data = " + data);
stream.close();
urlConnection.disconnect();
}

return data;
}

JSON 在我的浏览器中正确显示,我看到的一切都与 Google 在文档中描述的一样。但是在接下来的几行中,当我尝试打开到 URL 的连接并将 JSON 拉入字符串进行解析时,我收到了 System.err 通知

05-02 09:56:01.540: W/System.err(32232): java.io.FileNotFoundException: 
https://maps.googleapis.com/maps/api/directions/json?origin=Full Frame Documentary
Film Festival, Durham, 27701&destination=601 W Peace St, Raleigh, 27605&sensor=false&key={API_KEY}

我想我的困惑在于浏览器完美地显示了解析的地址,但随后连接到(我认为是)同一服务器返回了 FNFE。我假设是这种情况是错误的吗?如果是这样,我的 key 实际上可能是错误的吗?令人困惑的是这段代码在另一个应用程序中工作。

最佳答案

您必须对参数进行 URL 编码,例如URL 中的空格(“”)写为“+”。您的浏览器在内部执行此操作,可能不会向您显示提交的 URL。

static String urlEncode(String value) {
try {
return URLEncoder.encode(value, "UTF-8");
} catch (UnsupportedEncodingException e) {
return value;
}
}

但是不要对整个 URL 进行编码,只对参数值进行编码。如果参数名称不是 ASCII,则它们也必须进行编码,但 Google API 不使用此类参数。

关于android - 为 Google Maps API v2 Android 发布流媒体指示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23430032/

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