0

我有一个 java webservice,如果登录成功,它必须返回一个响应

服务器端方法的返回行是

    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方法有这个fi

@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 应用程序,

我在这个线程中描述的过程中的错误在哪里???

我希望有一个人可以帮助我。

4

3 回答 3

1

我应该使用代码

stringEntity.setContentEncoding(HTTP.UTF_8);

将编码模式设置为 UTF,这样,服务器接受 json 请求并给出正确的响应

于 2012-05-04T10:42:37.573 回答
0

试试:System.out.println("The response is "+sb.toString());

line在每个循环中被擦除。

于 2012-03-03T17:54:58.033 回答
0

我有几乎完全相同的代码,它对我来说很好,也许你发送的请求有问题。查看响应状态码以检查错误:

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

服务器端可能有一些错误导致你得到一个空的 500 响应或其他东西。

于 2012-03-03T18:03:58.753 回答