Ответ 1
Я делаю это с помощью
httppost.setHeader("Content-type", "application/json");
Кроме того, new HttpPost()
принимает URL-адрес веб-службы в качестве аргумента.
Я хочу отправить текст 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
Я делаю это с помощью
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);
Вы можете добавить свое имяValurPairs в зависимости от того, сколько полей у вас есть. Как правило, JSON может стать действительно огромным, и я тогда предлагаю gzipping его затем отправить, но если ваш JSON довольно мал и всегда того же размера, то выше должно работать для вас.
Если это веб-служба, а не вызов RestAPI, вы можете получить WSDL файл с сервера и использовать генератор-заглушку SOAP для выполнения всей работы по созданию объектов Request и сетевого кода для вас, например WSClient ++
Если вы хотите сделать это сами, тогда все становится немного сложнее. Android не поставляется с SOAP-библиотекой. Однако вы можете скачать стороннюю библиотеку здесь: http://code.google.com/p/ksoap2-android/
Если вам нужна помощь в ее использовании, вы можете найти эту тему полезной: Как вызвать .NET Webservice с Android с помощью KSOAP2?
Если его вызов REST-API, например POST или GET, более конкретный, то это очень просто Просто передайте объект JSON Formatted String в своей функции и используйте пакет org.json для анализа строки ответа для вас.
Надеюсь, что это поможет.