Android.os.NetworkOnMainThreadException上的错误

时间:2015-02-15 18:00:24

标签: java android android-asynctask

我是Android的初学者,我试图学习如何使用php将数据从手机发送到网络服务器但是我坚持这个问题android.os.networkonmainthreadexception,需要帮助:|有关于Main的.java

public class PengaduanKeluhan extends Activity {
dbData db;

private Button btnKirim;
Button btnSimpan;
EditText txtNama;
EditText txtNotelp;
EditText txtKeluhan;
TextView txtStatus;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pengaduankeluhan);


    txtNama = (EditText) findViewById(R.id.txtNama);
    txtNotelp = (EditText) findViewById(R.id.txtNotelp);
    txtKeluhan = (EditText) findViewById(R.id.txtKeluhan);
    btnKirim = (Button) findViewById(R.id.btnKirim);
    btnSimpan = (Button) findViewById(R.id.btnSimpan);
    txtStatus = (TextView) findViewById(R.id.txtStatus);

    db = new dbData();
   //Toast.makeText(this, db.readData(), Toast.LENGTH_SHORT).show();

    btnKirim.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick (View v){
            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("nama", txtNama.getText().toString()));
            postParameters.add(new BasicNameValuePair("no_telepon", txtNotelp.getText().toString()));
            postParameters.add(new BasicNameValuePair("keluhan", txtKeluhan.getText().toString()));

            String response = null;

            try {

                response = CustomHttpClient.executeHttpPost("http://xxxxxx.esy.es/save.php", postParameters);

                String res = response.toString();

                res = res.trim();

                res = res.replaceAll("\\s+","");

                txtStatus.setText(res);
            }
            catch (Exception e) {
                txtStatus.setText(e.toString());
            }

        }
    });

}`

和这个CustomHttpClient.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

public class CustomHttpClient {

/** The time it takes for our client to timeout */
public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds

/** Single instance of our HttpClient */
private static HttpClient mHttpClient;

/**
 * Get our single instance of our HttpClient object.
 *
 * @return an HttpClient object with connection parameters set
 */
private static HttpClient getHttpClient() {
    if (mHttpClient == null) {
        mHttpClient = new DefaultHttpClient();
        final HttpParams params = mHttpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
        HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
        ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
    }
    return mHttpClient;
}

/**
 * Performs an HTTP Post request to the specified url with the
 * specified parameters.
 *
 * @param url The web address to post the request to
 * @param postParameters The parameters to send via the request
 * @return The result of the request
 * @throws Exception
 */
public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception {
    BufferedReader in = null;
    try {
        HttpClient client = getHttpClient();
        HttpPost request = new HttpPost(url);
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
        request.setEntity(formEntity);
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);
        }
        in.close();

        String result = sb.toString();
        return result;
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

/**
 * Performs an HTTP GET request to the specified url.
 *
 * @param url The web address to post the request to
 * @return The result of the request
 * @throws Exception
 */
public static String executeHttpGet(String url) throws Exception {
    BufferedReader in = null;
    try {
        HttpClient client = getHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI(url));
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

        StringBuffer sb = new StringBuffer("");
        String line = "";
        String NL = System.getProperty("line.separator");
        while ((line = in.readLine()) != null) {
            sb.append(line + NL);
        }
        in.close();

        String result = sb.toString();
        return result;
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  }
}

0 个答案:

没有答案