-1

此代码用于通过发布两个数据 num、db 并获得响应来从 php 服务器获取详细信息。公共类 MainActivity 扩展 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 用于将两个值 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;
}

将两个数据项发布到 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 以返回所需的值。此外,您必须<uses-permission android:name="android.permission.INTERNET"></uses-permission></application>manifest.xml 文件中添加。

于 2013-07-13T03:01:34.497 回答