2013-05-17 81 views
1

真的有这个问题的问题。 下面的代码假设发送到POST值(用户名,密码)到服务器,并且服务器应该只响应GET和POST的var_dump。Android HTTP发送不发送帖子

PHP代码:

var_dump($_POST); 
var_dump($_GET); 

ANDROID CODE:

InputStream is = null; 

//http post 
try{ 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url + "?test=test"); 
     httpPost.setHeader("Content-Type", "application/json"); 
     httpPost.setHeader("Accept", "application/json"); 

     // place them in an array list 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("username", "1123")); 
     nameValuePairs.add(new BasicNameValuePair("password", "123123")); 

     // add array list to http post 
     httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 

     Log.i("Network", "POST URL: " + url); 
     Log.i("Network", "POST ARGS: " + jsonObj.toString()); 

    } catch(Exception e){ 

     Log.e("Network", "POST Error in http connection " + e.toString()); 

    } 

但我得到的是:

array(0) { 
} 
array(1) { 
    ["test"]=> string(4) "test" 
} 

我已经测试了服务器与卷曲:卷曲-F“用户名= test'http://xx.xx.xx.xx/test.php 它给了我正确的回报:

array(1) { 
    ["username"]=> string(9) "test" 
} 
array(0) { 
} 

那么我在做什么错在android的帖子?

+0

你的数据显然不是json。 'httpPost.setHeader(“Content-Type”,“application/json”)有什么意义?''? – njzk2

回答

1

您不应将您的Content-Type标头设置为application/json。您可以不设置Content-Type标题或将其手动设置为application/x-www-form-urlencoded

+0

啊,好吧,那有效。无论如何,我可以用ArrayList替代: StringEntity post_entity = new StringEntity(jsonObj.toString(),HTTP.UTF_8); httpPost.setEntity(post_entity); –

+0

,它不再是'NameValuePairs'的'POST'。所以请接受它,如果这是正确的答案。 –

+0

是的,这是NameValuePairs的正确答案,只是想知道你是否有'StringEntity(jsonObj.toString(),HTTP.UTF_8)'的解决方案;'通过任何改变? –