1

こんにちは、他のプラットフォーム (1.6 以降) で動作するサンプル アプリケーションがありますが、同じアプリケーションが新しい Android 4.1 シミュレーターで動作しません。問題は HttpConnection に関するものです。ログインをしたいと思ったら、それができないということです。他のすべての AVD(1.6,2.1,2.2) で正常に動作するため、コードに問題はありません。

簡単な httpconnection コードも試してみましたが、それでもうまくいきません。

4.1 のシミュレーターでインターネットを実行するために必要な特別な設定があります。しかし、以前のプラットフォームでは、設定を行っていませんでした。

私の HttpConnection コードは次のとおりです。

public String httpGetResponse(String url) {
    connectionUrl = url;
    query_string="";
    String response = null;
    try {
        int loc = url.indexOf('?');
        if(loc>-1){
            try {
                query_string=url.substring(loc);
            } catch (Exception e) {
                query_string="";
            }
        }
        processGetRequest();
        HttpResponse httpresponse = httpclient.execute(host, get);
        response = EntityUtils.toString(httpresponse.getEntity());
    } catch (Exception e) {
        response = null;
    }
    return response;
}

このメソッドを次のように呼び出しています。

response = connectionUtil.httpGetResponse("My URL");

他のすべてのプラットフォームでは、 String として応答を得ましたが、4.1 では次のような応答を得ています。

response:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org          /TR/html4/loose.dtd"><HTML><HEAD><META HTTP-EQUIV="Content-Type"    CONTENT="text/html; charset=iso-    8859-1"><TITLE>ERROR: The requested URL could not be retrieved</TITLE>

..........

任意の提案をいただければ幸いです よろしくお願いします。

4

1 に答える 1

2

この問題には2つの解決策があります。

1)メインUIスレッドでネットワーク呼び出しを記述しないでください。そのために非同期タスクを使用してください。

2)setContentView(R.layout.activity_main);の後に、以下のコードをMainActivityファイルに書き込みます。

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

そして、以下のインポートステートメントをJavaファイルに入れます。

import android.os.StrictMode;
于 2012-11-01T10:31:51.303 に答える