#android #json #rest #http-post
#Android #json #остальное #http-post
Вопрос:
@Override
protected Void doInBackground(Void... arg0) {
HttpClient httpClient = new DefaultHttpClient();
// Creating HTTP Post
HttpPost httpPost = new HttpPost("www.somewebsite.com");
httpPost.setHeader("Content-type", "application/json");
try {
httpPost.setEntity(new StringEntity(getJSONString(), "UTF-8"));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// Making HTTP Request
try {
HttpResponse response = httpClient.execute(httpPost);
System.out.println(response.getStatusLine().getStatusCode());
} catch (ClientProtocolException e) {
// writing exception to log
e.printStackTrace();
} catch (IOException e) {
// writing exception to log
e.printStackTrace();
}
}
Для меня это работает нормально. Однако я хочу отправить другие jsonobject
бизнес-данные на сервер. Как я могу это сделать?
Ответ №1:
Просто объедините 2 JSONObjects в 1.
{
"json_1": {
"a": "1"
},
"json_2": {
"b": "2"
}
}
Комментарии:
1. Будет ли сервер понимать строки «json_1» и «json_2»? Здесь первый jsonobject предназначен для аутентификации сервера (содержит идентификатор и regn ключ), а второй jsonobject предназначен для отправки бизнес-данных.
2. Об этом должен позаботиться ваш сервер, что-то вроде: getTheWholeJSONObject jObj; 1_jsonobject = jObj.getJSONObject(«json_1»); 2_jsonobject = jObj.getJSONObject(«json_2»);
3. Да, понял! Но у меня нет контроля над сервером. В любом случае я создал два httpPosts, и это сработало для меня.
Ответ №2:
Вы можете отправить только один объект, поэтому вашу функцию getJSONString()
необходимо будет обновить, чтобы вернуть оба объекта в виде одной строки.
Возможно, вы захотите рассмотреть возможность отправки правильного списка JSON.
[
{ /* object one */ },
{ /* object two */ }
]
Я думаю, что это гораздо предпочтительнее, чем «комбинированный объект»
{
"object one" : { /* object one */ },
"object two" : { /* object two */ }
}
Использование объединенного объекта затрудняет синтаксический анализ, так как вам нужно явно извлекать каждый вложенный объект из основного объекта. С помощью массива вы можете просто перебирать каждый элемент списка, что означает, что добавить больше в список так же просто, как добавить больше в список. Ваше точное использование может означать, что объединенный объект лучше, например, если вам нужно знать точный порядок, в котором должны обрабатываться подобъекты; Списки JSON неупорядочены, как вы видите.
Комментарии:
1. Что такое «объект один» и «объект два» здесь? Могу ли я назвать что-нибудь, чтобы сервер понял?
2. да, это json. Это ключи, которые вы будете использовать для возврата соответствующих объектов. Я предлагаю вам быстро взглянуть на json.org .
Ответ №3:
Просто! Объедините оба json с помощью разделителя, а затем разделите с помощью разделителя на сервере.
Или создайте новый объект json с обоими json и отправьте общий объект json на сервер.
Nithin