-1

このコードは、2 つのデータ num,db を投稿して応答を取得することにより、php サーバーから詳細を取得するためのものです。public class MainActivity extends Activity {

Button b;
TextView num;
TextView dob;
String db;
String x;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b=(Button) findViewById(R.id.button1);
    num=(TextView) findViewById(R.id.editText1);
    dob=(TextView) findViewById(R.id.editText2);
    x=(String) num.getText();
    db=(String) dob.getText();

    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            submit();
        }
    });

}

submit fn は、2 つの値 num,db をサーバーに送信して応答を取得するためのものです。

public String submit(){
    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();  
    postParameters.add(new BasicNameValuePair("registerno", x ));  
    postParameters.add(new BasicNameValuePair("dob", db ));            

    String response = "";

    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://www.pnrinbox.com/premfin.php");

    try 
    {
            HttpResponse execute = client.execute(httpGet);
            InputStream content = execute.getEntity().getContent();

            BufferedReader buffer = new BufferedReader(
                    new InputStreamReader(content));
            String s = "";
            while ((s = buffer.readLine()) != null) 
            {
                response += s;
            }

            Log.d( "After call, response: " , " " + response);
        } 
        catch (Exception e) 
        {
            System.out.println(e.toString());
        }

    return response;
}

2 つのデータ項目を php サーバーに投稿し、データを取得します。

4

2 に答える 2

0

NetworkOnMainThreadException が発生していることは間違いありません。すべてのネットワーク操作は、非 UI スレッドで実行する必要があります。Android ドキュメントで AsyncTask クラスを検索することをお勧めします: http://developer.android.com/reference/android/os/AsyncTask.html

submit()おそらく、関数の本体をdoInBackground()asyncTask の関数に移動する必要があることに気付くでしょう。

于 2013-07-13T02:58:28.620 に答える
0

ネットワーク アクセスに AsyncTask を使用し、UI スレッドから AsyncTask を呼び出して目的の値を返す必要があると思います。また、manifest.xml ファイルの の<uses-permission android:name="android.permission.INTERNET"></uses-permission>後に配置する必要があります。</application>

于 2013-07-13T03:01:34.497 に答える