HttpGet with request body android

后端 未结 3 1204
有刺的猬
有刺的猬 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: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

提交回复
热议问题