0

インターネットから xml ファイルを読み込もうとしています。

これは私が使用しているコードです:

HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.mypage.com/version.xml");
HttpResponse resp = client.execute(httppost);

そして、私はこの例を取得しています:

android.os.NetworkOnMainThreadException

回答に従って非同期メソッドでこれを実行しようとしています。これは私が試したコードです:

public class Download extends AsyncTask<String, Void, Document> {

@SuppressWarnings("unused")
private Exception exception;
public Document document;

public Download(String url)
{
    this.execute(url);
}

@Override
protected Document doInBackground(String... url) {
    try {
        HttpUriRequest request = new HttpGet(url.toString());
        HttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(request);

        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.parse(response.getEntity().getContent());
            return document;
        } else {
            throw new IOException("Download failed, HTTP response code "
                    + statusCode + " - " + statusLine.getReasonPhrase());
        }            

    } catch (Exception e) {
        exception = e;
        return null;
    }
}

protected void onPostExecute(Document doc)
{
    // TODO: check this.exception 
    // TODO: do something with the feed
    document = doc;
}

}

しかし、ドキュメントは無効です。

4

1 に答える 1

0

内にWebCallロジックを含めるようにしてくださいAsyncTask

doInBackground()参考までに、AsyncTaskのメソッド内でバックグラウンドプロセスを実行できます。

于 2012-04-24T07:10:47.493 に答える