How to use setEntity in Android Volley?
Asked Answered
T

1

6

In httpPost we setEntity(new StringEntity). But I'm using volley right now. I'd like to use that setEntity method in volley. How can I do that?

I would like to use it with Twitter api like this;

HttpPost httpPost = new HttpPost(TwitterTokenURL);
httpPost.setHeader("Authorization", "Basic " + base64Encoded);
httpPost.setHeader("Content-Type", "application/x-www-form-  urlencoded;charset=UTF-8");
httpPost.setEntity(new StringEntity("grant_type=client_credentials"));
Tiflis answered 7/4, 2014 at 18:15 Comment(2)
probably in the set headers method, you have to override the Request<T> object to do custom things in volleyDemars
Hi , I am trying to do the same , need to set StringEntity .could you plz help me on this .. how did you solve this.Dachau
S
4

@Override getBodyContentType() and getBody() in your extended Request<T> class using something similar to the following:

@Override
public String getBodyContentType() {
    return entity.getContentType().getValue();
}

@Override
public byte[] getBody() throws AuthFailureError {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    try {
        entity.writeTo(outputStream);
    } catch (IOException e) {
        VolleyLog.e("IOException @ " + getClass().getSimpleName());
    }
    return outputStream.toByteArray();
}
Semele answered 7/4, 2014 at 18:29 Comment(1)
This answer helped me. However it is not complete. The entity can be a ByteArrayEntity. This link has a more complete sample: #16797968Toothless

© 2022 - 2024 — McMap. All rights reserved.