我正在连接到Guardian的新闻源以下载JSON。我偶尔会得到JavaScript并导致错误。 URL存储在静态最终字符串中,因此始终相同。我在调试器中看到的url对于JSON是正确的。实际上,如果我将url从调试器表达式窗口中复制出来并将其粘贴到浏览器中,我就会返回JSON。我认为问题不在于卫报。我认为我的连接代码中的某些内容可能会以某种方式破坏网址,并且Guardian会将JavaScript作为默认值发送给我。但我真的不知道。
以下是在所有情况下使用的URL。注意格式-json:
static final String GuardianUrl = "http://content.guardianapis.com/search?format=json&show-fields=headline%2Cbody%2Cthumbnail%2CtrailText%2ClastModified&date-id=date%2Ftoday&api-key=mykey";
以下是正确返回时JSON文件的顶部: { “响应”:{ “状态”: “OK”, “userTier”: “批准”, “总”:203, “的startIndex”:1, “的pageSize”:10, “当前页”:1, “页”:21, “排序依据”:“最新”, “结果”:[{ 等
这就是我在JavaScript中得到的回复:
09-21 15:00:18.853: E/JSON Parser(22101): Error converting string to json <html><head> <script language='javascript' type='text/javascript'>function init(_frm) { if (_frm.sent.value == 0) { _frm.sent.value=1; _frm.submit(); } }</script></head><body onload=init(auth)><form name=auth action='http://192.168.3.1:10080/ui/dynamic/guest-login.html' METHOD=GET><input type=hidden name='mac_addr' value='e0:75:7d:d3:15:0a'><input type=hidden name='url' value='http://content.guardianapis.com/search?format=json&show-fields=headline%2Cbody%2Cthumbnail%2CtrailText%2ClastModified&date-id=date%2Ftoday&api-key=pdva9u6ac2rqsx9a7hexzrv3'><input type=hidden name='ip_addr' value='192.168.3.142'><input type=hidden id=sent value='0'><noscript><input type=submit value='continue'></noscript></form></body></html> ... etc
这是连接和下载文件的代码:
public String getJSONFromUrl(String _url) throws IOException {
URL url = new URL(_url);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
// Making HTTP request
try {
//ByteArrayOutputStream out = new ByteArrayOutputStream();
//InputStream in = connection.getInputStream();
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
return null;
}
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null) {
builder.append(line);
}
if (builder.toString().length()>0)
json = builder.toString();
return json;
} finally {
connection.disconnect();
}
}
答案 0 :(得分:0)
看起来你的路由器有问题,而不是你的代码。当它不起作用时,您看到的响应来自您的路由器。 您是否在任何机会使用Linksys E4200上的访客网络功能?您获得的响应是访客登录页面。 这可能很有用:http://homecommunity.cisco.com/t5/Social-Support/Amazon-com-EA6500-Guest-network-became-inaccessible-after-a/td-p/583866