0

我不确定问题出在 PHP 还是 Android 应用程序上,但我正在发送带有数据的 HttpPost 并且只得到 ??? 插入我的数据库表。我在 PHP 中做了以下操作:

     $db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');
     mysql_query("SET NAMES utf8;");
     mysql_query("SET CHARACTER_SET utf8;");

然后在android中我做了以下事情:

           String postReceiverUrl = "http://hwy.com/displaypost.php";
        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "utf-8");
        // HttpClient
        HttpClient httpClient = new DefaultHttpClient(params);

        // post header
        HttpPost httpPost = new HttpPost(postReceiverUrl);

        // add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

        //All user input
        EditText shopName = (EditText)findViewById(R.id.shopName);
        EditText shopLocation = (EditText)findViewById(R.id.shopLocation);
        EditText shopCity = (EditText)findViewById(R.id.shopCity);
        EditText discountRate = (EditText)findViewById(R.id.shopDiscount);
        EditText discountDuration = (EditText)findViewById(R.id.shopDiscountDuration);

        nameValuePairs.add(new BasicNameValuePair("name", shopName.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("location", shopLocation.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("city", shopCity.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("rate", discountRate.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("duration", discountDuration.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("category", shopCategory));

        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // execute HTTP post request

        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity resEntity = response.getEntity();

        if (resEntity != null) {

            String responseStr = EntityUtils.toString(resEntity).trim();
            Log.v("", "Response: " +  responseStr);

            // you can add an if statement here and do other actions based on the response
        }

我在 logcat 中收到的响应是:

07-20 10:52:56.996: V/(7749): Response: Array
07-20 10:52:56.996: V/(7749): (
07-20 10:52:56.996: V/(7749):     [name] => ???????
07-20 10:52:56.996: V/(7749):     [location] => ???????
07-20 10:52:56.996: V/(7749):     [city] => ???????
07-20 10:52:56.996: V/(7749):     [rate] => ???????
07-20 10:52:56.996: V/(7749):     [duration] => ??????
07-20 10:52:56.996: V/(7749):     [category] => ????? ? ?????????
07-20 10:52:56.996: V/(7749): )

知道为什么会分手吗?

提前致谢

4

1 回答 1

0

经过长时间的研究和实验,找到了答案。就是这个:

 httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

其次是:

    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));

这里的所有都是它的!希望有一天它可以帮助某人

于 2013-07-20T13:12:19.010 回答