org.json.JSONException:typesjava.lang.String的值<!DOCTYPE不能转换为JSONObject

这里我想用API键显示JSON内容。 但是我无法获得authentication。

我得到JsonObject中的错误:

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

在我的android应用程序中,我只是传递API key和URL id来获得下面的URL中的JSON响应。 我使用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://sofzh.miximages.com/android/"+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; } } 

Solutions Collecting From Web of "org.json.JSONException:typesjava.lang.String的值<!DOCTYPE不能转换为JSONObject"

更新:

基于HTML响应,我可以告诉你,这不是JSON。 响应告诉我,您的Web服务的URL不正确。

你需要检查你的url。

额外的信息/以前的答案:

它看起来像简单的答案是正确的 – 你的结果是不是一个有效的JSONstring。 有关JSON应该是什么样的细节,请参阅JSON.org网站。

查看JSONparsing器在线 – 我发现它在使用JSON时非常有用。

奇怪的是,你正在请求JSON,并没有正确地返回 – 也许我错过了一些东西。

是的,当给定的URL无效时,我们会收到这样的警告。

只需检查一次URL。

从API中删除docType。 并设置内容typesApplication / json。 (因为text / html不会被读为json,所以你看到了错误。)

在使用Google翻译的jsonurl时,我收到了相同的"<!Doctype..."错误。 然后,我发现这个代码的地方,它的工作:

  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(); }