在这里,我想使用API密钥显示
JSON内容.但我无法获得身份验证.
我在JsonObject中收到错误:
org.json.JSONException: Value Authorization of type java.lang.String cannot be converted to JSONObject
在我的Android应用程序中,我只是传递API密钥和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://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; } }
解决方法
更新:
基于HTML响应,我可以告诉你这不是JSON.该响应告诉我您的Web服务的URL不正确.
您需要检查您的网址.
额外信息/上一个答案:
看起来简单的答案是正确的 – 您的结果不是有效的JSON字符串.有关JSON应该是什么样的详细信息,请参见JSON.org网站.
查看JSON Parser Online – 我发现它在使用JSON时非常有用.
很奇怪你正在请求JSON,它没有正确地返回它 – 也许我错过了一些东西.