1

rest service を使用している Android アプリケーションがあります。post/get リクエストを rest service に送信すると、rest サーバーで操作が完了し、サーバー応答 200 ok が返されます。しかし、応答本文を取得しようとすると、次のエラーが発生します。

" Android  An exception occurred: java.lang.IllegalStateException "

私のコードブロックを以下に示します

 HttpEntity ResponseEntity = resp.getEntity();
                 if(ResponseEntity!=null){

                     String responseBody = EntityUtils.toString(ResponseEntity); // Error Occurs here
                 }

http request を作成している私のクラス。

package httpOperations;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.StringEntity;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.util.Base64;
import android.util.Log;

import com.google.gson.Gson;

public class HttpGetRequest extends baseHttpRequest {

    HttpGet httpGet = null;

    public HttpGetRequest(String methodName, String prms) {
        super((methodName));
        String base64EncodedCredentials = "Basic "
                + Base64.encodeToString(("ilhan" + ":" + "123").getBytes(),
                        Base64.NO_WRAP);
        String URL = GetServiceURL();
        httpGet = new HttpGet(URL);

        httpGet.setHeader("Authorization", base64EncodedCredentials);
        httpGet.setHeader(HTTP.CONTENT_TYPE, "application/json");
        httpGet.setHeader("accept", "application/json");
        Gson gson = new Gson();

        StringEntity se = null;

    }

    @Override
    public HttpResponse SendRequest() {
        HttpResponse resp = null;
        try {

            resp = GetHttpClient().execute(httpGet);
            final int statusCode = resp.getStatusLine().getStatusCode();

            if (statusCode != HttpStatus.SC_OK) {
                Log.w(getClass().getSimpleName(), "Error " + statusCode
                        + " for URL " + GetServiceURL());
            }

            HttpEntity ResponseEntity = resp.getEntity();

            if (ResponseEntity != null) {
                String responseBody = EntityUtils.toString(ResponseEntity);

            }

            // ResponseEntity.getContent();

        }

        catch (IOException e) {

            httpGet.abort();

            Log.w(getClass().getSimpleName(), "Error for URL "
                    + GetServiceURL(), e);

        }
        return resp;
    }

}

私は asynctask やその他の非同期操作を使用していません。これは理由になりますか?

ありがとう。

4

0 に答える 0