android HttpGet / HttpPost参数总是以null的形式到达服务器

时间:2014-04-07 10:35:32

标签: android httpclient http-get

我正在尝试将数据发送到服务器,但似乎我总是发送空值,任何想法?我们的想法是通过移动应用程序将新客户添加到托管在服务器中的数据库中。

这是我的代码:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_nuevo_insert);

    //etResponse = (EditText) findViewById(R.id.etResponse2);
    etNombre = (EditText) findViewById(R.id.etNombre);
    etApellido = (EditText) findViewById(R.id.etApellido);
    etEdad = (EditText) findViewById(R.id.etEdad);

    nombre = etNombre.getText().toString();
    apellido = etApellido.getText().toString();
    edad = etEdad.getText().toString();

    } 

    public void insertar(View view) {
    // Call AsyncTask to perform network operation on separate thread
    // working in localhost you CAN'T put localhost in that address, you
    // MUST put your IP address or it will crush
    new HttpAsyncTask().execute("http://192.168.1.34/android/insertCustomer.php");
    }

    public static String GET(String url) {
    InputStream inputStream = null;
    String result = "";
    try {
        // create HttpClient
        HttpClient httpClient = new DefaultHttpClient();

        // make GET request to the given URL
        HttpResponse httpResponse = httpClient.execute(new HttpGet(url+ "?nombre=" +    nombre + "&apellido=" + apellido + "&edad="+ edad));

        // receive response as InputStream
        inputStream = httpResponse.getEntity().getContent();

        // convert InputStream to string
        if (inputStream != null) {
        result = convertInputStreamToString(inputStream);
        } else {
        result = "No ha funcionat!";
        }
     } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
     }
        return result;
    }

    private class HttpAsyncTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {
        return GET(urls[0]);
    }

    // onPostExecute displays the results of the AsyncTask
    @Override
    protected void onPostExecute(String result) {
        String s = "";
        Toast.makeText(getBaseContext(),getResources().getString(R.string.rebut), Toast.LENGTH_LONG).show();
    JSONArray jArray;
    try {
        jArray = new JSONArray(result);
        for (int i = 0; i < jArray.length(); i++) {
        JSONObject json = jArray.getJSONObject(i);

        s = s + "Nom: " + json.getString("FirsName") + " "
            + json.getString("LastName") + "\n" + "Edat: "+ json.getInt("Age") + "\n\n";
        }
        etResponse.setText(s);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
}

这是我的php文件:

    <?php
        $con = mysql_connect('localhost', 'root', '');

        if(!$con){

        die("No se ha podido realizar la conexion: ".mysql_error());

        }

        mysql_select_db("TestDatabase", $con);

        $nombre = $_GET['nombre'];
        $apellido = $_GET['apellido'];
        $edad = $_GET['edad'];

        print_r($nombre."-".$apellido."-".$edad);

        $result = mysql_query("insert into customer(FirsName, LastName, Age) values         ('$nombre', '$apellido', '$edad')");

        mysql_close($con);

?>

3 个答案:

答案 0 :(得分:1)

好的问题是我从onCreate的EditText框中检索数据而我必须在GET方法中执行: - )

答案 1 :(得分:0)

更改

 HttpResponse httpResponse = httpClient.execute(new HttpGet(url+ "?nombre=" +    nombre + "&apellido=" + apellido + "&edad="+ edad));

到此:

String request = url+ "?nombre=" +    nombre + "&apellido=" + apellido + "&edad="+ edad;
Log.d("DEBUG", request); 
HttpResponse httpResponse = httpClient.execute(request);

并查看您的logcat以获取您的网址,也许它已损坏。 如果网址没问题,请尝试在浏览器中打开此网址并查看结果。

答案 2 :(得分:0)

如果你得到空值意味着意味着传递错误的类型参数或网址可能是错的你会检查出来