0

ログインが成功した場合に応答を返す必要がある Java Web サービスがあります。

サーバー側メソッドの戻り行は

    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 メソッドにはこの fim があります

@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"}]}

Web サービスは 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 に答える