2013-05-22 4 views
2

Я пробовал много способов отправить данные с помощью HttpPost, но мне это не удалось, если кто-нибудь знает об этом, пожалуйста, помогите?Опубликовать JsonArray и строковые параметры с использованием HttpPost в android

Мой URL обслуживание:
http://xxxxx/xxx/abc.php?id=xx&name=xxx&data=[{.....}]

его работает нормально, когда я ударил из браузера, но из моего кода data=[{}] не посылают.

Мои последние попытки:
1 --->

String serviceUrl = "http://xxxxx/xxx/abc.php"; 


DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(serviceUrl); 
     httpPost.setHeader("id", "xx"); 
     httpPost.setHeader("name", "xxx"); 
     httpPost.setHeader("Content-Type", "application/json"); 
     StringEntity entity = new StringEntity(jsonArr.toString(), HTTP.UTF_8); 
     httpPost.setEntity(entity); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     json_str = EntityUtils.toString(httpEntity); 

2 --->

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("id", "xx")); 
    nameValuePairs.add(new BasicNameValuePair("name", "xxx"));  
    nameValuePairs.add(new BasicNameValuePair("data", jsonArr.toString())); 

     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(serviceUrl); 
     httpPost.setHeader("Content-Type", "application/json"); 
     StringEntity entity = new StringEntity(nameValuePairs.toString(), HTTP.UTF_8); 
     httpPost.setEntity(entity); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     json_str = EntityUtils.toString(httpEntity); 

3 --->

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("id", "xx")); 
nameValuePairs.add(new BasicNameValuePair("name", "xxx")); 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(serviceUrl); 
httpPost.setHeader("Content-Type", "application/json"); 
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
StringEntity entity = new StringEntity(jsonArr.toString(), HTTP.UTF_8); 
httpPost.setEntity(entity); 
HttpResponse httpResponse = httpClient.execute(httpPost); 
HttpEntity httpEntity = httpResponse.getEntity(); 
json_str = EntityUtils.toString(httpEntity); 

Выход: Получение ответа такой же, как я получил с URL 'http://xxxxx/xxx/abc.php?id=xx&name=xxx' (без параметра данных) в браузере, я вещь, это означает, что данные = [{}] не отсылают с simple_string_parameters из моего кода.

+0

[см. Мой ответ] (http://stackoverflow.com/questions/13134019/http-post-method-passing-null-values-to-the-server/13134287#13134287) –

+0

какая проблема вы получаете со всеми этими методами для отправки строки json на сервер? –

+0

спасибо, chintan, я видел ваш ответ, мне нужно, чтобы я сочетал ваш первый и второй способ, но как? я не понимаю. – Deven

ответ

3

Пробовал много способ передачи данных с использованием HttpPost, но не удалось

=> Да его очевидна, так как ваш WebService URL является следующий метод GET, а не POST.

http://xxxxx/xxx/abc.php?id=xx&name=xxx&data=[ {.....}]

Так что я хотел бы предложить вам попробовать HTTPGet метод вместо HTTPPost.

Отметьте этот ответ для adding parameters to a HTTP GET request in Android?

+0

спасибо. да, я также попробовал HttpGet с url: String serviceUrl = "http: //xxxxx/xxx/abc.php? id = xx & name = xxx & data =" + jsonArr.toString(); но не работает. – Deven

+0

Спасибо Paresh, теперь он работает для меня, используя «URLEncodedUtils», но он работает с использованием HttpPost, а почему ...? – Deven

Смежные вопросы