2013-09-21 3 views
0

Я подключаюсь к ленте новостей Guardian для загрузки JSON. Время от времени я возвращаюсь к JavaScript и вызывает ошибку. URL-адрес хранится в статической конечной строке, поэтому он всегда один и тот же. URL-адрес, который я вижу в отладчике, верен для JSON. На самом деле, если я скопирую url из окна выражений отладчика и вставлю его в браузер, я верну JSON. Я не думаю, что проблема с Хранителем. Я думаю, что что-то в моем коде подключения может каким-то образом исказить URL-адрес, и Guardian отправляет мне JavaScript по умолчанию. Но я действительно не знаю.Проблема с Bizarre URL При подключении к Guardian API

Вот 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, когда он возвращается правильно: { "ответ": { "Статус": "ОК", "userTier": "утвержден », "всего": 203, "StartIndex": 1, "PAGESIZE": 10, "CurrentPage": 1, "страницы": 21, "OrderBy": "новейшие", "результаты" : [{ и т. Д.

И это это то, что я вернусь, когда речь идет, как 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&#38show-fields=headline%2Cbody%2Cthumbnail%2CtrailText%2ClastModified&#38date-id=date%2Ftoday&#38api-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

Это выглядит как проблема с вашим маршрутизатором, а не ваш код. Когда он не работает, ответ, который вы видите, поступает с вашего маршрутизатора. Вы используете функцию гостевой сети на Linksys E4200? Ответ, который вы получаете, - это страница входа гостя. Это может быть полезно: http://homecommunity.cisco.com/t5/Social-Support/Amazon-com-EA6500-Guest-network-became-inaccessible-after-a/td-p/583866

+0

Это очень интересно. Отличная добыча! У меня есть маршрутизатор NetGear, и я просто перезагрузился, и проблема исчезла! Если у него есть гостевая функция, я не использую ее. Любая идея, что может вызвать это? – Glenn

+0

Нет, извините - я не знаю много о маршрутизаторах, если честно. Я просто заметил, что ответ в вашем случае с ошибкой выглядел так, как будто он поступает с вашего маршрутизатора, а затем Googled 'http: //192.168.3.1: 10080/ui/dynamic/guest-login.html' –

Смежные вопросы