Skip to content Skip to sidebar Skip to footer

Httpget With Request Body Android

I try to make a request on server by HttpGet. But in message body should be a json object. Code below is not working because unit_id and sercret_key are not sent on server in body

Solution 1:

Basically, you cannot send row data in the body (JSON or anything) with an HTTP/GET request. The protocol simply does not allow you to do that. Obviously, you will have to use POST to do that in Android too. :)

UPDATE

I was incorrect. Infact the protocol does allow you to put an entity into the request object. This class can be used instead of Apache HttpGet.

public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {

    public HttpGetWithEntity() {
        super();
    }

    public HttpGetWithEntity(URI uri) {
        super();
        setURI(uri);
    }

    public HttpGetWithEntity(String uri) {
        super();
        setURI(URI.create(uri));
    }

    @Override
    public String getMethod() {
        return HttpGet.METHOD_NAME;
    }
}

And use it like as follows,

HttpClientclient=newDefaultHttpClient();
HttpGetWithEntitymyGet=newHttpGetWithEntity("Url here");
myGet.setEntity(newStringEntity("This is the body", "UTF8"));
HttpResponseresponse= client.execute(myGet);

The source for HttpGetWithEntity is found here

Solution 2:

If you wnat to add JSON object to your request it must be a Post request, and this is how you perform it:

publicstaticString sendComment (String commentString, int taskId, String sessionId, int displayType, String url) throws Exception{

    //creating map object to creat Json object from itMap<String, Object> jsonValues = newHashMap<String, Object>();
    jsonValues.put("sessionID", sessionId);
    jsonValues.put("NewTaskComment", commentString);
    jsonValues.put("TaskID" , taskId);
    jsonValues.put("DisplayType" , displayType);
    JSONObject json = newJSONObject(jsonValues);

    //creating a post request.DefaultHttpClient client = newDefaultHttpClient();
    HttpPost post = newHttpPost(url + SEND_COMMENT_ACTION);

    //setting json object to post request.AbstractHttpEntity entity = newByteArrayEntity(json.toString().getBytes("UTF8"));
    entity.setContentType(newBasicHeader(HTTP.CONTENT_TYPE, "application/json"));
    post.setEntity(entity);

    //this is your response:HttpResponse response = client.execute(post);
    returngetContent(response);    
}

Solution 3:

Here is nice example how to do it and it is working.

Apache HttpClient GET with body

But this approach is against RESTFUL api i think.

Post a Comment for "Httpget With Request Body Android"