org.json.JSONException: значение <! DOCTYPE типа java.lang.String не может быть преобразовано в JSONObject.

Здесь я хочу отобразить содержимое JSON с помощью ключа API. Но я не могу получить аутентификацию.

Я получаю сообщение об ошибке в JsonObject:

org.json.JSONException: Value Authorization of type java.lang.String cannot be converted to JSONObject

В моем приложении для Android я просто передаю ключ API и идентификатор URL, чтобы получить ответ JSON в следующем URL. Я отображаю содержимое JSON с помощью массива JSON.

Но если я:

public class AndroidAPiActivity extends Activity {

/*
 * FlickrQuery = FlickrQuery_url
 * + FlickrQuery_per_page
 * + FlickrQuery_nojsoncallback
 * + FlickrQuery_format
 * + FlickrQuery_tag + q
 * + FlickrQuery_key + FlickrApiKey
 */

String FlickrQuery_url = "http://192.138.11.9/api/interests/";
String FlickrQuery_per_page = "&per_page=1";
String FlickrQuery_nojsoncallback = "&nojsoncallback=1";
String FlickrQuery_format = "&format=json";
String FlickrQuery_tag = "&tags=";
String FlickrQuery_key = "&api_key=";

// Apply your Flickr API:
// www.flickr.com/services/apps/create/apply/?
   String FlickrApiKey = "f65215602df8f8af";

   EditText searchText;
   Button searchButton;
   TextView textQueryResult, textJsonResult;
   ImageView imageFlickrPhoto;
   Bitmap bmFlickr;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       searchText = (EditText)findViewById(R.id.searchtext);
       searchButton = (Button)findViewById(R.id.searchbutton);
       textQueryResult = (TextView)findViewById(R.id.queryresult);
       textJsonResult = (TextView)findViewById(R.id.jsonresult);
       imageFlickrPhoto = (ImageView)findViewById(R.id.flickrPhoto);
       searchButton.setOnClickListener(searchButtonOnClickListener);
   }

   private Button.OnClickListener searchButtonOnClickListener
   = new Button.OnClickListener(){

 public void onClick(View arg0) {
  // TODO Auto-generated method stub
  String searchQ = searchText.getText().toString();
  String searchResult = QueryFlickr(searchQ);
  textQueryResult.setText(searchResult);
  String jsonResult = ParseJSON(searchResult);
  textJsonResult.setText(jsonResult);

  if (bmFlickr != null){
   imageFlickrPhoto.setImageBitmap(bmFlickr);
  }
 }};

   private String QueryFlickr(String q){

    String qResult = null;

    String qString =
      FlickrQuery_url
      + FlickrQuery_per_page
      + FlickrQuery_nojsoncallback
      + FlickrQuery_format
      + FlickrQuery_tag + q 
      + FlickrQuery_key + FlickrApiKey;

    HttpClient httpClient = new DefaultHttpClient();
       HttpGet httpGet = new HttpGet(qString);

       try {
  HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();

  if (httpEntity != null){
   InputStream inputStream = httpEntity.getContent();
   Reader in = new InputStreamReader(inputStream);
   BufferedReader bufferedreader = new BufferedReader(in);
   StringBuilder stringBuilder = new StringBuilder();

   String stringReadLine = null;

   while ((stringReadLine = bufferedreader.readLine()) != null) {
    stringBuilder.append(stringReadLine + "\n");
    }

   qResult = stringBuilder.toString();

  }

 } catch (ClientProtocolException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IOException e) {  
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

       return qResult;
   }

   private String ParseJSON(String json){

    String jResult = null;
    bmFlickr = null;
    String key_id;
    String category;
    String subcategory;
    String title;
    String icon_image;

    try
     {
  JSONObject JsonObject = new JSONObject(json);
  JSONObject Json_photos = JsonObject.getJSONObject("interests");
  JSONArray JsonArray_photo = Json_photos.getJSONArray("interest");

  //We have only one photo in this exercise
  JSONObject FlickrPhoto = JsonArray_photo.getJSONObject(0);

  key_id = FlickrPhoto.getString("row_key");
  category = FlickrPhoto.getString("category");
  subcategory = FlickrPhoto.getString("subcategory");
   title = FlickrPhoto.getString("title");

  jResult = "\n key_id: " + key_id + "\n"
    + "category: " + category + "\n"
    + "subcategory: " + subcategory + "\n"
    + "title: " + title + "\n";

  bmFlickr = LoadPhotoFromFlickr(key_id, category, subcategory,title);

 } catch (JSONException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

    return jResult;
   }

   private Bitmap LoadPhotoFromFlickr(
     String key_id, String category, String subcategory,
     String title){
    Bitmap bm= null;

    String icon_image = null;
 //   String FlickrPhotoPath ="";
   String FlickrPhotoPath ="http://182.72.180.34/media/"+icon_image+".jpg";

    URL FlickrPhotoUrl = null;

    try {

  FlickrPhotoUrl = new URL(FlickrPhotoPath);

  HttpURLConnection httpConnection = (HttpURLConnection) FlickrPhotoUrl.openConnection();
  httpConnection.setDoInput(true);
  httpConnection.connect();
  InputStream inputStream = httpConnection.getInputStream();
  bm = BitmapFactory.decodeStream(inputStream);

 } catch (MalformedURLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

    return bm;
   }
}
 Richard Le Mesurier04 июн. 2012 г., 09:58
возможно отредактируйте вопрос & amp; удалите значение FlickerApiKey - замените его на «xxxxxxxxxxxxxx». Это не важно для вопроса, и может дать кому-то доступ к вашему API.
 rajeshlawrance04 июн. 2012 г., 10:28
на самом деле я поставил неправильный IP-адрес с правильным ключом API .... извините

Ответы на вопрос(4)

Да, мы получаем такое предупреждение, когда указанный URL-адрес недействителен.

Просто проверьте URL один раз.

"<!Doctype..." ошибка при работе с URL-адресами json Google Translate. Затем я нашел этот код где-то, и он работал:

        BasicHttpParams basicHttpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout((HttpParams)basicHttpParams, (int)10000);
        HttpConnectionParams.setSoTimeout((HttpParams)basicHttpParams, (int)10000);
        HttpConnectionParams.setTcpNoDelay((HttpParams)basicHttpParams, (boolean)true);
        DefaultHttpClient defaultHttpClient = new DefaultHttpClient((HttpParams)basicHttpParams);
        HttpGet httpGet = new HttpGet(url);
        BasicResponseHandler basicResponseHandler = new BasicResponseHandler();

        JSONObject json=null;
        try {
            json = new JSONObject((String)defaultHttpClient.execute((HttpUriRequest)httpGet, (ResponseHandler)basicResponseHandler));
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

(так как text / html не будет читаться как json. Таким образом, вы видели ошибку.)

Решение Вопроса
Update:

я могу вам сказать, что это не JSON. Ответ говорит мне, что у вас неправильный URL для вашего веб-сервиса.

Вы должны проверить свой URL.

Extra Info / Previous Answer:

Похоже, простой ответ правильный - ваш результат не является допустимой строкой JSON. УвидетьJSON.org сайт для деталей о том, как должен выглядеть JSON.

Проверять, выписыватьсяJSON Parser Online - Я считаю его очень полезным при работе с JSON.

Странно, что вы запрашиваете JSON, и он не возвращает его должным образом - возможно, я что-то пропустил.

 12 февр. 2015 г., 17:57
Я также получил эту ошибку, когда мой URL был неверным. Так что, безусловно, стоит проверить URL.
 04 июн. 2012 г., 09:56
@rajesh Пожалуйста, скажите мне, каково значение String searchResult.
 17 июл. 2014 г., 19:34
Я получил эту ошибку, когда я указал неверный путь. В моем случае это был www.mywebsite.com/script.php.php
 rajeshlawrance04 июн. 2012 г., 10:29
результат searchResult выглядит как страница html ... внутри моего эмулятора Android "Страница, не найденная на странице api / Interest / @ amp; per_page = 1 @ amp; nojsoncallback = 1 @ amp; format = json & amp; api_key = & quot; f6ddfgdfgdfgdfgdf & quot;
 rajeshlawrance04 июн. 2012 г., 07:29
да, но теперь я получаю сообщение об ошибке в org.json.JSONException: значение & lt;! DOCTYPE типа java.lang.String не может быть преобразовано в JSONObject.

Ваш ответ на вопрос