не может распечатать ответ Json-RPC - PullRequest
0 голосов
/ 03 марта 2012

У меня есть веб-сервис java, который должен возвращать ответ, если вход выполнен успешно

Возвращаемая строка метода на стороне сервера:

    return new Response(new InfoSessionJson(newKey, is), null, id);

Чтобы получить ответ, я попытался использовать код

HttpResponse response = mClient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
if(response != null){
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = null;
                loggato=true;
                try {
                     while ((line = reader.readLine()) != null) {
                     sb.append(line + "\n");
                }
                System.out.println("The response is "+sb.toString());

Но вывод печати возвращает ошибку apache

Я попытался напечатать вывод

HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();

напрямую с

  System.out.print(entity);
  System.out.print(response);

и этот отпечаток:

org.apache.http.conn.BasicManagedEntity@40575ac8 org.apache.http.message.BasicHttpResponse@40574a00

Где ошибка ??

Я не могу правильно разобрать ответ или проблема раньше ???

метод веб-сервиса имеет этот код

@Webservice(paramNames = {"email", "password", "stayLogged", "idClient"},
public Response startSession(String email, String password, Boolean stayLogged, String idClient)

и я посылаю JSON с

StringEntity stringEntity = new StringEntity(jsonObject.toString());
                    httpost.setEntity(stringEntity);
                    httpost.setHeader("Accept", "application/json");
                    httpost.setHeader("Content-type", "application/json");

Где отправленный объект json

{"method":"startSession","params":[{"email":"test.web@yahoo.it","password":"1234","idClient":"ANDROID","stayLogged":"1"}]}

Веб-сервис прекрасно работает с приложением iOS, но не работает с моим приложением Android,

Где ошибка в процедуре, которую я описал в этой теме ???

Надеюсь, кто-нибудь сможет мне помочь.

Ответы [ 3 ]

1 голос
/ 04 мая 2012

Я должен использовать код

stringEntity.setContentEncoding(HTTP.UTF_8);

для установки режима кодирования в UTF, при этом сервер принимает запрос json и дает правильный ответ

0 голосов
/ 03 марта 2012

У меня почти такой же код, и он прекрасно работает для меня, возможно, есть проблема с отправляемым вами запросом. Посмотрите на код состояния ответа, чтобы проверить ошибки:

status = response.getStatusLine();
status_code = status.getStatusCode();

Возможно, на стороне сервера произошла ошибка, из-за которой вы получили пустой ответ 500 или что-то в этом роде.

0 голосов
/ 03 марта 2012

Попробуйте: System.out.println("The response is "+sb.toString());.

line стирается в каждом цикле.

...