I'm using HttpURLConnection to do communication with a backend server and im doing so in an async task in the doInBackground method as you should.
Now I need to be able to follow 302 redirects, but I'm having some problems with this. The issue is that the new location usually will be on another host, however when doing the redirect request it seem not to change the URL to a new host hence I get a 404 error saying the specified path does not exits. Now I know I could set HtppURLConnection.setFollowRedirect but I need to have more control over the redirects so they should not just be followed blindly. The Redirect behavour should be controlled by the object who called the asynctask (when an asynctask object is created you pass the object who creates it in a parameter called _callback). Heres's my current code: protected HttpResponse doInBackground(String... req) { HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection) this._url.openConnection(); urlConnection.setConnectTimeout( (int) this._timeout*1000); String body = req[0]; // set headers / write information to output stream if request is post // create the response object HttpResponse responseObject = null; try { // get status, contenttype, charset... InputStream in = null; if (urlConnection.getResponseCode() != -1 && urlConnection.getResponseCode() < 300) { in = new BufferedInputStream(urlConnection.getInputStream(), 8192); } else { in = new BufferedInputStream(urlConnection.getErrorStream(), 8192); } responseObject = new HttpResponse(in, status, contentType, charset); // if redirect if (status == 302 && this._callback.onRedirect(responseObject) == true) { // recall String url = urlConnection.getHeaderField("location"); Log.v("Async Task", "Redirect location: " + url); this._url = null; this._url = new URL(url); urlConnection.disconnect(); urlConnection = null; responseObject = this.doInBackground(req); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // return the response return responseObject; } // catch some other exceptions finally { if (urlConnection != null) { urlConnection.disconnect(); } } } And as said the problem is that the redirect request seem to change the path of the URL but not the host. The URL object itself seem to contain the right information so I have no idea why this is happening. (I'm getting HTML as response which is an 404 error page that includes the server name of the old server) Thanks for any help! Note: HttpResponse is just an object I created for holding the relevant information about the response. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en