2016-11-28 2 views
0

URL-адрес, который я использую для получения JSON, перенаправляет URL-адрес для recaptcha и дает следующую ошибку: org.json.JSONException данные: Значение <!DOCTYPE of type java.lang.String cannot be converted to JSONObject "Ошибка при анализе данных: org.json.JSONException: значение <! DOCTYPE типа java.lang.String не может быть преобразовано в JSONObject

Ниже активность и код имеет URL я пытаюсь получить JSON из, но вместо этого я получаю перенаправлены рекапчи:

protected Void doInBackground(Void... params) { 
      // Create an array 
      arraylist = new ArrayList<HashMap<String, String>>(); 
      // Retrieve JSON Objects from the given URL address 
//URL 

       jsonobject = JSONfunctions 
         .getJSONfromURL("http://laboneinside.com/android/diag_conn.php"); 

      try { 
       // Locate the array name in JSON 
       jsonarray = jsonobject.getJSONArray("result"); 
       Log.i("JSON TAG", jsonobject.toString()); 

       for (int i = 0; i < jsonarray.length(); i++) { 
        HashMap<String, String> map = new HashMap<String, String>(); 
        jsonobject = jsonarray.getJSONObject(i); 
        // Retrive JSON Objects 
        map.put("nameDiag", jsonobject.getString("name")); 
        map.put("srcDiag", jsonobject.getString("src")); 
        map.put("linkDiag", jsonobject.getString("link")); 
        // Set the JSON Objects into the array 
        arraylist.add(map); 
       } 
      } catch (JSONException e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return null; 
     } 

JSONFUNCTION:

public class JSONfunctions { 

    public static JSONObject getJSONfromURL(String url) { 
     InputStream is = null; 
     String result = ""; 
     JSONObject jArray = null; 

     // Download JSON data from URL 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(url); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 

     } catch (Exception e) { 
      Log.e("log_tag", "Error in http connection " + e.toString()); 
     } 

     // Convert response to string 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result = sb.toString(); 
      Log.i("JSON Parser", result); 
     } catch (Exception e) { 
      Log.e("log_tag", "Error converting result " + e.toString()); 
     } 

     try { 

      jArray = new JSONObject(result); 

     } catch (JSONException e) { 
      Log.e("log_tag", "Error parsing data " + e.toString()); 
     } 

     return jArray; 
    } 
} 

Ниже приводится LogCat:

I/JSON Parser: <!DOCTYPE html> 
                      <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]--> 
                      <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en-US"> <![endif]--> 
                      <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en-US"> <![endif]--> 
                      <!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]--> 
                      <head> 
                      <title>Attention Required! | CloudFlare</title> 
                      <meta charset="UTF-8" /> 
                      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
                      <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" /> 
                      <meta name="robots" content="noindex, nofollow" /> 
                      <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" /> 
                      <link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/cf.errors.css" type="text/css" media="screen,projection" /> 
                      <!--[if lt IE 9]><link rel="stylesheet" id='cf_styles-ie-css' href="/cdn-cgi/styles/cf.errors.ie.css" type="text/css" media="screen,projection" /><![endif]--> 
                      <style type="text/css">body{margin:0;padding:0}</style> 
                      <!--[if lte IE 9]><script type="text/javascript" src="/cdn-cgi/scripts/jquery.min.js"></script><![endif]--> 
                      <!--[if gte IE 10]><!--><script type="text/javascript" src="/cdn-cgi/scripts/zepto.min.js"></script><!--<![endif]--> 
                      <script type="text/javascript" src="/cdn-cgi/scripts/cf.common.js"></script> 


                      </head> 
                      <body> 
                      <div id="cf-wrapper"> 
                       <div class="cf-alert cf-alert-error cf-cookie-error" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div> 
                       <div id="cf-error-details" class="cf-error-details-wrapper"> 
                       <div class="cf-wrapper cf-header cf-error-overview"> 
                        <h1 data-translate="challenge_headline">One more step</h1> 
                        <h2 class="cf-subheadline"><span data-translate="complete_sec_check">Please complete the security check to access</span> laboneinside.com</h2> 
                       </div><!-- /.header --> 

                       <div class="cf-section cf-highlight cf-captcha-container"> 
                        <div class="cf-wrapper"> 
                        <div class="cf-columns two"> 
                         <div class="cf-column"> 
                         <div class="cf-highlight-inverse cf-form-stacked"> 
                          <form class="challenge-form" id="challenge-form" action="/cdn-cgi/l/chk_captcha" method="get"> 
                      <script type="text/javascript" src="/cdn-cgi/scripts/cf.challenge.js" data-type="normal" data-ray="308cf17ac17329be" async data-sitekey="6LfOYgoTAAAAAInWDVTLSc8Yibqp-c9DaLimzNGM" data-stoken="kvvwvLSUth2MQ7fsfXFwr9TjwkJ6pEiMAfiAhb7x9fVk7yqCvGMh-myXoKQuhQt_4MjgZHunito0fikCnHS-DFoymBKWm5gb3lnlB4dceb0"></script> 
                      <div class="g-recaptcha"></div> 
                      <noscript id="cf-captcha-bookmark" class="cf-captcha-info"> 
                       <div><div style="width: 302px"> 
                       <div> 
                        <iframe src="https://www.google.com/recaptcha/api/fallback?k=6LfOYgoTAAAAAInWDVTLSc8Yibqp-c9DaLimzNGM&stoken=kvvwvLSUth2MQ7fsfXFwr9TjwkJ6pEiMAfiAhb7x9fVk7yqCvGMh-myXoKQuhQt_4MjgZHunito0fikCnHS-DFoymBKWm5gb3lnlB4dceb0" frameborder="0" scrolling="no" style="width: 302px; height:422px; border-style: none;"></iframe> 
                       </div> 
                       <div style="width: 300px; border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;"> 
                        <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none;"></textarea> 
                        <input type="submit" value="Submit"></input> 
                       </div> 
                       </div></div> 
                      </noscript> 
                      </form> 

                         </div> 
                         </div> 

                         <div class="cf-column"> 
                         <div class="cf-screenshot-container"> 

                          <span class="cf-no-screenshot"></span> 

                         </div> 
                         </div> 
                        </div><!-- /.columns --> 
                        </div> 
                       </div><!-- /.captcha-container --> 

                       <div class="cf-section cf-wrapper"> 
                        <div class="cf-columns two"> 
                        <div class="cf-column"> 
                         <h2 data-translate="why_captcha_headline">Why do I have to complete a CAP 
11-28 04:55:15.976 30265-30325/com.example.predator.labone E/log_tag: Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 

Как я остановить его перенаправлять так, что я могу попасть на страницу, которая имеет данные в формате JSON?

+0

Похоже, вы пытаетесь преобразовать String в объект JSON, поэтому вы получаете эту ошибку. Перед преобразованием ответа как объекта JSON убедитесь, что ответ находится в JSON From. – Vishwa

+0

Смотрите вопрос еще раз я редактировал его @Vishwa –

+0

вы можете разместить эту функциональность код .. JSONfunctions .getJSONfromURL() – Vishwa

ответ

0

Nelson вы получаете содержимое html с веб-службы. Формат ответа не является допустимым json, что происходит при возникновении JSONException.

+0

Смотрите вопрос снова я есть отредактировал его –

1

Существует некоторый тип брандмауэра применяется к сети, которую вы используете, Пожалуйста, прочитайте HTML внимательно, «Please complete the security check to access»

Я пытался ударять URL-адрес упомянул, и это дает следующий ответ,

{"result":[{"id":"1","name":"Acer V3-571 Schematic Diagram","src":"https:\/\/www.laboneinside.com\/wp-content\/uploads\/2016\/11\/Acer-V3-571-Schematic-Diagram-620x330.png","link":"https:\/\/www.laboneinside.com\/acer-v3-571-schematic-diagram\/"}]} 

Попробуйте использовать другую сеть/WIFI или исправьте старый.

+0

Если я получаю эту ошибку в своей сети, кто-то еще может это сделать, так что изменение сети не является решением –

+0

. Моя главная проблема заключается в том, что ваша сеть имеет некоторый межсетевой экран, который ваш сервер не может пройти. Как обычно родители ограничивают сервер facebook, поэтому ребенок не может использовать facebook в домашней сети, поэтому в этом случае вы не можете обвинять facebook в том, что там код. Попытайтесь понять –

+0

@NelsonJohn Sahil Garg прав. Когда я попытался с вашим кодом, это работает. Попробуйте с другим сетевым подключением. – Vishwa

0

Идея капчей заключается в предотвращении скрипирования экрана и бот-атак. На основе того, с чем вы сталкиваетесь, Cloudflare понимает, что ваш звонок является ботом и перенаправляет его автоматически на страницу captcha. Попросите поставщика API удалить ботовую защиту для API с помощью правила страницы. Для получения дополнительной информации прочитайте эту статью https://support.cloudflare.com/hc/en-us/articles/200504045-Using-CloudFlare-with-your-API

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

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