How do I handle a 302 redirect response to my HTTP callout?

I am accessing an API, but when i debug the response it shows this message [Status=Moved Temporarily, StatusCode=302]. what should i do to access my required response.. my code is given below

public class WebServiceCall{

    public String getResult{get;set;}

    public PageReference submit() {
        return null;

    public String getData()
        HttpRequest req= new HttpRequest();
         Http http = new Http();
        String url = '';
        HttpResponse res = http.send(req);
        String json =  res.getBody();
        try {
            JSONObject j = new JSONObject( json );
            return parseJson(j);
        } catch (JSONObject.JSONException e) {
            return 'Error parsing JSON response from Web: '+e;

    public String parseJson(JSONObject resp){
        return resp.getString('type');


It has been a month since the original post, but hopefully this helps someone else out in the same situation. I handle a similar situation when logging into Site Minder protected pages. I use the code below to deal with sites that throw out an unknown amount of redirects.

Http http = new Http();
HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
// do your initial http call here
res = http.send(req);
// redirection checking
boolean redirect = false;
if(res.getStatusCode() >=300 && res.getStatusCode() <= 307 && res.getStatusCode() != 306) {
    do {
        redirect = false; // reset the value each time
        String loc = res.getHeader('Location'); // get location of the redirect
        if(loc == null) {
            redirect = false;
        req = new HttpRequest();
        res = http.send(req);
        if(res.getStatusCode() != 500) { // 500 = fail
            if(res.getStatusCode() >=300 && res.getStatusCode() <= 307 && res.getStatusCode() != 306) {
                redirect= true;
            // I do special handling here with cookies
            // if you need to bring a session cookie over to the
            // redirected page, this is the place to grab that info
    } while (redirect && Limits.getCallouts() != Limits.getLimitCallouts());
//congratulations you're outside of the redirects now
//read what you need from the res object

It looks for a redirect HTTP response code and then grabs the location from the headers, and repeats the process until it gets a normal response or falls through without a proper response.

You could add some more checks for other status codes as well. Check here for the status codes if you’re not familiar with them.

Source : Link , Question Author : wixxey , Answer Author : drakored

Leave a Comment