Параметры публикации в запросе Android

Я делаю приложение для Android, и у меня проблема с выполнением моего запроса на моем собственном сервере. Я сделал сервер с Play Framework и получил параметры из Json:

 response.setContentTypeIfNotSet("application/json; charset=utf-8");        
 JsonParser jsonParser = new JsonParser(); 
 JsonElement jsonElement = jsonParser.parse(getBody(request.body)); 
 Long id =jsonElement.getAsJsonObject().get("id").getAsLong();

Когда я делаю запрос GET на свой сервер, все в порядке. Но когда я делаю запрос POST, мой сервер возвращает мне неизвестную ошибку, что-то о неправильном формате JSON или о том, что он не может найти элемент.

частные параметры ArrayList NameValuePair>;

частные заголовки ArrayList NameValuePair>;

...

случай ПОСТ:

  HttpPost postRequest = new HttpPost(host);
  // Add headers
  for(NameValuePair h : headers) 
  {
       postRequest.addHeader(h.getName(), h.getValue());
  }
  if(!params.isEmpty())
  {
       postRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
  }
  executeRequest(postRequest, host);
  break;

Я пытался сделать с параметрами запроса, но это был сбой:

if(!params.isEmpty()) {
HttpParams HttpParams = new BasicHttpParams();

 for (NameValuePair param : params)
 {
      HttpParams.setParameter(param.getName(), param.getValue());
 }                
 postRequest.setParams(HttpParams); }

И есть разные ошибки, в зависимости от запроса, который я делаю. Все они "play.exceptions.JavaExecutionException":

  • 'com.google.gson.stream.MalformedJsonException'
  • «Это не объект JSON»
  • 'Найден ожидающий объект: "id"'

Я хочу, чтобы кто-нибудь мог мне помочь.


person Mato Reyes Castañeda    schedule 22.01.2013    source источник


Ответы (2)


Вот простой способ отправить сообщение HTTP.

HttpPost httppost = new HttpPost("Your URL here");
httppost.setEntity(new StringEntity(paramsJson));
httppost.addHeader("content-type", "application/json");
HttpResponse response = httpclient.execute(httppost);

Вам лучше использовать строку JSON напрямую, а не анализировать ее здесь. Надеюсь, поможет

person Neo    schedule 22.01.2013
comment
Но у меня есть параметры List‹NameValuePair› для добавления в запрос. Если я создам свой собственный JSON в формате String, я должен сделать это вручную? Спасибо за все. - person Mato Reyes Castañeda; 22.01.2013
comment
Привет, Нео, я разместил JSON в соответствии с вашим предложением. Как я могу запросить параметры на сервере ASP.Net? - person Karthick; 22.10.2013

person    schedule
comment
Это именно то, что я сделал, потому что в моих параметрах кода есть List‹NameValuePair›. Очевидно, это не работает для меня :S Большое спасибо =) - person Mato Reyes Castañeda; 22.01.2013
comment
Пользователи E/Error (371): Ошибка 500:: 'play.exceptions.JavaExecutionException', 01-22 10:43:06.582: Пользователи E/Error (371): сообщение: com.google.gson.stream.MalformedJsonException: Use jsonReader.setLenient(true) для принятия искаженного JSON рядом с idUser1=57&idUser2=65 Пользователи E/Error (371): ' Пользователи E/Error (371): Ошибка 500:: 'play.exceptions.JavaExecutionException', Пользователи E/Error ( 371): сообщение: «Это не объект JSON». Пользователи E / Error (371): ошибка 500: : «play.exceptions.JavaExecutionException», пользователи E / Error (371): сообщение: «Найден ожидающий объект: имя» - person Mato Reyes Castañeda; 22.01.2013
comment
Извините за плохую лекцию. - person Mato Reyes Castañeda; 22.01.2013
comment
Какой JSON? У меня есть ArrayList NameValuePair, и единственное, что я могу сделать, это postRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); Я не использую JSON в приложении для Android. (Ошибки с сервера). - person Mato Reyes Castañeda; 22.01.2013