Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Warning/Error meaning - GbaRequest - GbaRequest: Constructor Called 222 userAgent Apache-HttpClient/UNAVAILABLE

W/System.err(27207): [DEBUG] GbaRequest - GbaRequest: Constructor Called 222 userAgent Apache-HttpClient/UNAVAILABLE (java 1.4)

Thank you in advance for the assistance. I wasn't able to find a post regarding this error I received on my project.

I receive this error only sometimes, though I'm not sure why it comes up as it seems random when it occurs. I don't notice anything out of the ordinary in my data input.

My android application is attempting to make a connection to a remote server and push data into the PostgreSQL tables. Would anyone be able to refer me to the proper documentation for this error or explain its meaning. I appreciate the assistance.

Here is my code:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser 
{
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    public JSONParser() 
    {
        // Empty Constructor
    }

    public JSONObject getJSONFromUrl(String url) 
    {
        try 
        {
            DefaultHttpClient httpClient = new DefaultHttpClient();
                httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, System.getProperty("http.agent"));
            HttpPost httpPost = new HttpPost(url);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
        } 
        catch(UnsupportedEncodingException e) 
        {
            e.printStackTrace();
        } 
        catch(ClientProtocolException e) 
        {
            e.printStackTrace();
        } 
        catch(IOException e) 
        {
            e.printStackTrace();
        }

        try 
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);

            StringBuilder sb = new StringBuilder();

            String line = null;

            while ((line = reader.readLine()) != null) 
            {
                sb.append(line + "\n");
            }

            is.close();

            json = sb.toString();
        } 
        catch (Exception e) 
        {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        try 
        {
            jObj = new JSONObject(json);
        } 
        catch (JSONException e) 
        {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        return jObj;
    }

    public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) 
    {
        try 
        {
            if (method == "POST") 
            {
                DefaultHttpClient httpClient = new DefaultHttpClient();
                    httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, System.getProperty("http.agent"));
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            } 
            else if (method == "GET") 
            {
                DefaultHttpClient httpClient = new DefaultHttpClient();
                    httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, System.getProperty("http.agent"));
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);
                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }
        }
        catch (UnsupportedEncodingException e) 
        {
            e.printStackTrace();
        } 
        catch (ClientProtocolException e) 
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }

        try 
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
            is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;

            while ((line = reader.readLine()) != null) 
            {
                sb.append(line + "\n");
            }

            is.close();
            json = sb.toString();
        } 


catch (Exception e) 
    {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try 
    {
        jObj = new JSONObject(json);
    } 
    catch (JSONException e) 
    {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    return jObj;
}

}

like image 915
Brandon Avatar asked Oct 20 '22 04:10

Brandon


1 Answers

That is not an error itself, Apache-HttpClient/UNAVAILABLE (java 1.4) is the default User Agent string for your Apache HttpClient.

This happens when you don't send the User Agent ("User-Agent:") via HTTP headers, then the phone GBA Service warn you about that.

If you want send the default system User Agent you can do

httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, System.getProperty("http.agent"));

this should be like

 Dalvik/1.6.0 (Linux; U; Android 4.2.2; Galaxy Nexus Build/JDQ39)

or if you want sent a custom User Agent you can do

httpClient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "My user agent");

or you can set the header via setHeader method

requestOrPost.setHeader("User-Agent", USER_AGENT);
like image 181
vzamanillo Avatar answered Oct 22 '22 17:10

vzamanillo