Как формировать JSON
Как формировать JSON
Здравствуйте!
Надо написать тестовое приложение для Андроид которое отправляет данные на сервер.
Пожалуйста, объясните как сформировать и отправить JSON запрос на сервер из JAVA-класса Андроид-приложения.
С уважением, Питер.
Надо написать тестовое приложение для Андроид которое отправляет данные на сервер.
Пожалуйста, объясните как сформировать и отправить JSON запрос на сервер из JAVA-класса Андроид-приложения.
С уважением, Питер.
Re: Как формировать JSON
Сформировать json можно например с помощью классов:piteriv писал(а):Здравствуйте!
Надо написать тестовое приложение для Андроид которое отправляет данные на сервер.
Пожалуйста, объясните как сформировать и отправить JSON запрос на сервер из JAVA-класса Андроид-приложения.
С уважением, Питер.
Код: Выделить всё
org.json.JSONObject;
org.json.JSONArray;
org.json.JSONException;
Код: Выделить всё
{"data" : {"login" : "какой-то логин", "pass" : "какой-то пароль", "id" : 25}}
Код: Выделить всё
JSONObject clientList = new JSONObject();
clientList.put("login","какой-то логин");
clientList.put("pass",pass);
clientList.put("id","какой-то пароль");
JSONObject listclient = new JSONObject();
listclient.put("data", clientList);
Код: Выделить всё
JSONObject jsonValue = new JSONObject();
JSONArray jsonArrayValue = new JSONArray();
for(int q = 1; q < 10; q++){
jsonArrayValue.put(q);
}
jsonValue.put("array",jsonArrayValue);
Код: Выделить всё
{"array" : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}
Re: Как формировать JSON
Спасибо!
Re: Как формировать JSON
Я сделал HTTP-POST запрос в отдельном потоке.
Он работает. На сервере PHP-сценарий принимает POST, но только вместо кириллицы символы вопроса.
Как это исправить, подскажите плиз?
Вот код http post
Он работает. На сервере PHP-сценарий принимает POST, но только вместо кириллицы символы вопроса.
Как это исправить, подскажите плиз?
Вот код http post
Код: Выделить всё
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://anterra.vov.ru/form.php");
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("login",name.getText().toString()));
try {
post.setEntity(new UrlEncodedFormEntity(pairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
HttpResponse responce = client.execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Re: Как формировать JSON
Из Вашего кода не понятно чем является переменная name. А вообще советую для сервер-клиентских общений использовать REST библиотеки. Или хотя бы не через библиотечку Apache. Она сильно громоздкая. Подключите к проекту Retrofit 2.0, один раз разберитесь и станет легче. Ваша проблема связана с кодировкой данных. Когда Вы посылаете эти данные по протоколу HTTP все символы, кроме английских букв, цифр, а так же символы: / - _ \ & . ! ~ * ' ( ) заменяются на их цифровой код в UTF-8 со знаком %. Например, пробел заменяется на %20, символ / на %2F, русские буквы кодируются двумя байтами в UTF-8, поэтому, к примеру, Ц заменится на %D0%A6. Сервер должен знать, в какой кодировки ему приходят данные. Для этого нужно добавить к заголовкам в POST запросе: Content-Type", "application/json; charset=utf-8.piteriv писал(а):Я сделал HTTP-POST запрос в отдельном потоке.
Он работает. На сервере PHP-сценарий принимает POST, но только вместо кириллицы символы вопроса.
Как это исправить, подскажите плиз?
Вот код http postКод: Выделить всё
HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://anterra.vov.ru/form.php"); List<NameValuePair> pairs = new ArrayList<NameValuePair>(); pairs.add(new BasicNameValuePair("login",name.getText().toString())); try { post.setEntity(new UrlEncodedFormEntity(pairs)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } try { HttpResponse responce = client.execute(post); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
В Вашем случае нужно добавить эту строчку:
Код: Выделить всё
post.setHeader("Content-Type", "application/json; charset=utf-8");
Код: Выделить всё
post.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8));
Re: Как формировать JSON
Спасибо.