3

私はこのウェブサイトhttp://givemepass.blogspot.hk/2011/12/http-server.htmlに従って、Android アプリケーションを使用して PHP サーバーに接続し、メッセージを取得しようとしています。

GetServerMessage.java

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class GetServerMessage {

    public String stringQuery(String url){
        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost method = new HttpPost(url);
            HttpResponse response = httpclient.execute(method);
            HttpEntity entity = response.getEntity();
            if(entity != null){
                return EntityUtils.toString(entity);
            }
            else{
                return "No string.";
            }
         }
         catch(Exception e){
             return "Network problem";
         }
    }
}

GetPhpServerMessageDemoActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class GetPhpServerMessageDemoActivity extends Activity {
    /** Called when the activity is first created. */
    private TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView)findViewById(R.id.text_view);
        GetServerMessage message = new GetServerMessage();
        String msg = message.stringQuery("http://192.168.1.88/androidtesting.php");
        textView.setText("Server message is "+msg);
    }

}

そのサイトhttp://uploadingit.com/file/d4632ekfpwjiupyn/GetPhpServerMessageDemo2.zipから Android アプリケーション プロジェクトをダウンロードして、自分の電話で実行しようとしましたが、うまくいきました。しかし、新しいプロジェクト (Minimuim Requied SDK: API8、Target SDK: API17、Compile with: API17) を開始し、これら 2 つの Java コードをコピーします。私はパーミッションを追加したandroid.permission.INTERNETので、どこに問題があるのか​​ わかりません。実行HttpResponse response = httpclient.execute(method);するとエラーが発生し、文字列「ネットワークの問題」が返されることしかわかりません。

4

2 に答える 2

1

ThreadSotirios Delimanolisが言ったように、ネットワークなどの長時間実行されるタスクを別の場所で実行する必要があります。AsyncTaskはおそらく進むべき道です。

于 2013-10-03T14:52:44.283 に答える