gpt4 book ai didi

java - Socrata URL 适用于 Chrome,不适用于 Android 应用

转载 作者:行者123 更新时间:2023-11-30 02:19:03 24 4
gpt4 key购买 nike

我正在尝试使用 data.LACity.org 使用 Socrata 软件发布的开放数据集。

他们有一个 Java API,但首先我尝试构建并发送一个 URL,因为许多人在 Udacity 上学习了“Sunshine”应用程序的一个变体。

现在我实际上是在构建一个 URL,然后将其发送出去,但随后我得到一个 FileNotFoundException,如下所示:

java.io.FileNotFoundException:http://data.lacity.org/resource/yv23-pmwf.json ?$select=zip_code, issue_date, address_start, address_end, street_name, street_suffix, work_description, valuation&$where=issue_date >= '2015-02-27T00:00:00' AND zip_code = 90291

麻烦的是:作为最后的尝试,整个 URL 是硬连接为一个完整的字符串,而不是从 fragment 构建。如果我将 URL 插入 Chrome,则该 URL 有效,但在我的应用程序中无效。

但在我的应用程序中,Sunshine 示例应用程序构建的旧 URL 字符串,从 Sunshine 运行的 logcat 插入,以替换不规则 URL 上的 URL,好吧,该调用有效,并返回 JSON 数据。

因此,当我从我的 Android 应用程序调用 LACity URL 获取 Socrata 数据时,我做错了什么。我已经尝试过 https 和 http,但都失败了。但是当我从示例应用程序调用天气图数据时,相同的代码会起作用。

这是两个网址:

http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7 <<< 这在 Chrome 和 Android 中都有效

https://data.lacity.org/resource/yv23-pmwf.json ?$select=zip_code, issue_date, address_start, address_end, street_name, street_suffix, work_description, valuation&$where=issue_date >= '2015-02-27T00:00:00' AND zip_code = 90291

这在 Chrome 中有效,但在 Android 中

如有任何建议,我们将不胜感激。我将再次尝试制作 Socrata Soda2 Java API 的正面或反面(以及为什么在这种情况下可能有必要这样做。)谢谢-k-

直接代码 fragment (请原谅我对 Android/Java 的陌生):

            final String PERMIT_BASE_URL = "one of the url strings above";

Uri builtUri = Uri.parse(PERMIT_BASE_URL).buildUpon()
.build();

URL url = new URL(builtUri.toString());
Log.v(LOG_TAG, "Build URL: " + url.toString());

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();

InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
if (inputStream == null) {
return null;
}
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
//simplify debugging
buffer.append(line + "\n");
}

if (buffer.length() == 0) {
return null;
}
permitJsonStr = buffer.toString();

Log.v(LOG_TAG, "Permit JSON string: " + permitJsonStr);


} catch (IOException e) {
Log.e(LOG_TAG, "Error on Xoom", e);
// Nothing to parse.
return null;
} finally{
if (urlConnection != null) {
urlConnection.disconnect();
}
if (reader != null) {
try {
reader.close();
} catch (final IOException e) {
Log.e(LOG_TAG, "Error closing stream on Xoom", e);
}
}

最佳答案

从该页面突出显示我的问题中的 URL 的方式得出这一点。

空间。

Android 的调用似乎因为 URL 字符串中的空格而咳嗽。我将它们全部关闭,但随后“AND”引起了问题。用 & 替换它,现在它可以工作了,硬连线。我将按预期从输入参数构建它,但我认为这没问题。

正如 Emily Litella 所说...

关于java - Socrata URL 适用于 Chrome,不适用于 Android 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28867084/

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