0

私はアンドロイド開発が初めてです。JSON形式でデータをダウンロードするための次のクラスがあります。HttpResponse httpResponse = httpClient.execute(httpPost); で Source not found エラーが発生し続けます。行...これは簡単な修正に違いないと確信しています...クラスコードは次のとおりです...

 package com.example.tankandroid;

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.json.JSONException;
 import org.json.JSONObject;

 import android.util.Log;

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JSONParser() {

}

public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    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();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

}
4

4 に答える 4

0

Apache HttpCore および HttpClient ライブラリを使用します。これら 2 つのライブラリを lib フォルダーに配置すると、自動的にビルド パスに追加されます。

于 2015-09-21T11:24:24.280 に答える
0

この状況の理由の 1 つは、AndroidManifest.xml ファイルでインターネット アクセス許可が不足している可能性があります。この行をマニフェストに追加すると、問題が修正されます。

<uses-permission android:name="android.permission.INTERNET" />
于 2015-10-11T12:57:27.073 に答える
0

このコードを onCreate メソッドに入れます

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
    StrictMode.setThreadPolicy(policy);
于 2015-08-06T11:13:59.313 に答える