HttpGet with request body android

后端 未结 3 1199
有刺的猬
有刺的猬 2021-01-21 06:55

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 bo

相关标签:
3条回答
  • 2021-01-21 07:10

    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.

    0 讨论(0)
  • 2021-01-21 07:14

    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,

    HttpClient client = new DefaultHttpClient();
    HttpGetWithEntity myGet = new HttpGetWithEntity("Url here");
    myGet.setEntity(new StringEntity("This is the body", "UTF8"));
    HttpResponse response = client.execute(myGet);
    

    The source for HttpGetWithEntity is found here

    0 讨论(0)
  • 2021-01-21 07:14

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

    public static String sendComment (String commentString, int taskId, String sessionId, int displayType, String url) throws Exception{
    
        //creating map object to creat Json object from it
        Map<String, Object> jsonValues = new HashMap<String, Object>();
        jsonValues.put("sessionID", sessionId);
        jsonValues.put("NewTaskComment", commentString);
        jsonValues.put("TaskID" , taskId);
        jsonValues.put("DisplayType" , displayType);
        JSONObject json = new JSONObject(jsonValues);
    
        //creating a post request.
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url + SEND_COMMENT_ACTION);
    
        //setting json object to post request.
        AbstractHttpEntity entity = new ByteArrayEntity(json.toString().getBytes("UTF8"));
        entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        post.setEntity(entity);
    
        //this is your response:
        HttpResponse response = client.execute(post);
        return getContent(response);    
    }
    
    0 讨论(0)
提交回复
热议问题