0

次のコードでは、URL からデータを解析できません

try{

  HttpClient client= new DefaultHttpClient();

            HttpGet http= new HttpGet("http://api.androidhive.info/contacts/");

            HttpResponse response = client.execute(http);

            HttpEntity httpentity = response.getEntity();

            is= httpentity.getContent();

        }catch (ClientProtocolException e) {

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

3 に答える 3

1

解析のどの部分が理解できないかを述べていないので、あなたとまったく同じ JSON データを解析する方法を示すこのチュートリアルを読むことができます:

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

于 2013-09-28T11:30:42.303 に答える
1

データを取得しようとしている場合は、応答を文字列値に変換する以下のコードを使用できます。

HttpClient client= new DefaultHttpClient();
HttpPost http=new HttpPost("http://api.androidhive.info/contacts/");
HttpResponse response = client.execute(http);
HttpEntity httpentity = response.getEntity();
String result=EntityUtils.toString(httpentity);

この結果値を使用して JSON を解析します。Stringを引数とするJSONArrayのコンストラクターを含むorg.json jar ファイルを使用できます。

例えば。JSON 解析

JSONArray jarray=new JSONArray(result);
for(int i=0;i<jarray.length();i++)
{
   JSONObject jobject=jarray.getJSONObject(i);
   System.out.println(jobject.getString("test"));
}

あなたの場合、JSONArray の代わりに最初の JSONObject を解析する必要があります。

于 2013-09-28T11:34:31.190 に答える
0

このようにしてください..これは、多くのアプリで使用するURLからjson応答を取得するための私の作業コードです。

 /**
 * This method used to get json from url.
 * 
 * @param url
 *            represented url
 * @return represented {@link JSONObject}
 */
public JSONObject getJSONFromUrl(String url) {

    InputStream is = null;
    JSONObject jObj = null;
    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        HttpResponse httpResponse = httpClient.execute(httpGet);

        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    } catch (Exception e) {
        e.printStackTrace();
    }
    try {
        jObj = new JSONObject(getResponseBody(is));

    } catch (Exception e) {
        e.printStackTrace();
    }
    return jObj;
}

/**
 * This method used to get response body.
 * 
 * @param instream
 *            represented input stream
 * @return represented {@link String}
 * @throws IOException
 *             represented {@link IOException}
 * @throws ParseException
 *             represented {@link ParseException}
 */
public String getResponseBody(final InputStream instream) throws IOException, ParseException {

    if (instream == null) {
        return "";
    }

    StringBuilder buffer = new StringBuilder();

    BufferedReader reader = new BufferedReader(new InputStreamReader(instream, "utf-8"));

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }

    } finally {
        instream.close();
        reader.close();
    }
    System.out.println(buffer.toString());
    return buffer.toString();

}
于 2013-09-28T11:32:29.757 に答える