Как отправить объект JSON через запрос HttpClient с Android?

Я хочу отправить текст JSON {} в веб-службу и прочитать ответ. Как я могу сделать это от android? Каковы такие шаги, как создание объекта запроса, настройка заголовков содержимого и т. Д.

Мой код здесь

public void postData(String result,JSONObject obj) { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpParams myParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(myParams, 10000); HttpConnectionParams.setSoTimeout(myParams, 10000); String json=obj.toString(); try { HttpPost httppost = new HttpPost(result.toString()); StringEntity se = new StringEntity(obj.toString()); se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httppost.setEntity(se); HttpResponse response = httpclient.execute(httppost); String temp = EntityUtils.toString(response.getEntity()); Log.i("tag", temp); } catch (ClientProtocolException e) { } catch (IOException e) { } } 

Какая ошибка я сделал plz, исправьте меня, потому что он показывает мне ошибку с неправильным запросом, но когда я отправляю сообщение на плакат, он показывает мне статус Successfull 200 ok

Solutions Collecting From Web of "Как отправить объект JSON через запрос HttpClient с Android?"

Я делаю это с помощью

 httppost.setHeader("Content-type", "application/json"); 

Кроме того, new HttpPost() использует URL веб-службы в качестве аргумента.

В цикле try catch я сделал следующее:

  HttpPost post = new HttpPost( "https://www.placeyoururlhere.com"); post.setHeader(HTTP.CONTENT_TYPE,"application/json" ); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("json", json)); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpClient client = new DefaultHttpClient(); HttpResponse resp = client.execute(post); HttpEntity entity = resp.getEntity(); response = EntityUtils.toString(entity); -  HttpPost post = new HttpPost( "https://www.placeyoururlhere.com"); post.setHeader(HTTP.CONTENT_TYPE,"application/json" ); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("json", json)); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpClient client = new DefaultHttpClient(); HttpResponse resp = client.execute(post); HttpEntity entity = resp.getEntity(); response = EntityUtils.toString(entity); 

Вы можете добавить свое имяValurPairs в соответствии с тем, сколько полей у вас есть. Как правило, JSON может стать действительно огромным, и я тогда предлагаю gzipping его, а затем отправку, но если ваш JSON довольно маленький и всегда того же размера, то выше будет работать для вас.

Если это веб-служба, а не вызов RestAPI, вы можете получить WSDL-файл с сервера и использовать генератор SOAP-Stub для выполнения всей работы по созданию объектов Request и сетевого кода для вас, например WSClient ++

Если вы хотите сделать это сами, тогда все становится немного сложнее. Android не поставляется с SOAP-библиотекой. Однако вы можете скачать стороннюю библиотеку здесь: http://code.google.com/p/ksoap2-android/

Если вам нужна помощь в его использовании, вы можете найти эту тему полезной: как вызвать .NET Webservice с Android с помощью KSOAP2?

Если его вызов REST-API, например POST или GET, более конкретный, то это очень просто. Просто передайте объект JSON Formatted String в своей функции и используйте пакет org.json для синтаксического анализа строки ответа.

Надеюсь это поможет.