0

I am coding my Android application and hit a roadblock.

I cant get a certain method to return a string.

I am using loopjs Async Http Client.

The code is as follows

public static String networkOps(final String relativeURL){
AsyncHttpClient client = new AsyncHttpClient();
client.get(BASE_URL+relativeURL, new TextHttpResponseHandler() {

        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

            Log.e(TAG,responseString);
        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            String response = responseString;
            Log.i(TAG,responseString);
            Log.i(TAG,BASE_URL+relativeURL);
        }
    });
    return response;
}
Jota
  • 17,281
  • 7
  • 63
  • 93

2 Answers2

0

Try:

public static String networkOps(final String relativeURL){
String response = null;
AsyncHttpClient client = new AsyncHttpClient();
client.get(BASE_URL+relativeURL, new TextHttpResponseHandler() {

    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

        Log.e(TAG,responseString);
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, String responseString) {
        response = responseString;
        Log.i(TAG,responseString);
        Log.i(TAG,BASE_URL+relativeURL);
    }
});
return response;

}

UPDATE:

Or u can get Response String by Method:

public String makeServiceCall(String url, int method,
            List<NameValuePair> params) {
        try {
            // http client
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            // Checking http request method type
            if (method == POST) {
                HttpPost httpPost = new HttpPost(url);
                // adding post params
                if (params != null) {
                    httpPost.setEntity(new UrlEncodedFormEntity(params));
                }

                httpResponse = httpClient.execute(httpPost);

            } else if (method == GET) {
                // appending params to url
                if (params != null) {
                    String paramString = URLEncodedUtils
                            .format(params, "utf-8");
                    url += "?" + paramString;
                }
                HttpGet httpGet = new HttpGet(url);

                httpResponse = httpClient.execute(httpGet);

            }
            httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return response;

    }
Sinh Phan
  • 1,180
  • 3
  • 16
  • 36
0

Pass in the ResponseHandler with the callback implemented.

Inside your activity:

private void doNetworkCall() {
    NetworkUtil.networkOps(final String relativeURL, new TextHttpResponseHandler() {
    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

        Log.e(TAG,responseString);
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, String responseString) {
        doSomethingWithResponse(responseString);
        Log.i(TAG,BASE_URL+relativeURL);
    }
 });

 private void doSomethingWithResponse(String response) {
      ....
      Log.i(TAG,responseString);
 }
razzledazzle
  • 6,900
  • 4
  • 26
  • 37