Как выполнить «перенаправление страницы», чтобы получить код ответа? - PullRequest
4 голосов
/ 12 января 2010

Я использую следующий код для получения возвращенного кода ответа на странице aspx

HttpConnection connection 
     = (HttpConnection) Connector.open("http://company.com/temp1.aspx" 
                                       + ";deviceside=true");
connection.setRequestMethod(HttpConnection.GET);
connection.setRequestProperty(HttpHeaders.HEADER_CONNECTION, "close");
connection.setRequestProperty(HttpHeaders.HEADER_CONTENT_LENGTH, "0");
int resCode = connection.getResponseCode();

Работает нормально. Но что, если ссылка "http://company.com/temp1.aspx" автоматически перенаправляет на другую страницу; предположим" http://noncompany.com/temp2.aspx"? Как я могу получить код ответа, который возвращается со второй ссылки (той, на которую перенаправлена ​​первая ссылка)? Есть ли что-то вроде «следовать за перенаправлением», чтобы получить новый ответ страницы, на которую была автоматически перенаправлена?

Спасибо заранее.

Ответы [ 2 ]

8 голосов
/ 12 января 2010

Я нашел решение, Вот это для тех, кому интересно:

int resCode;
String location = "http://company.com/temp1.aspx";
while (true) {  
     HttpConnection connection = (HttpConnection) Connector.open(location + ";deviceside=true");
     connection.setRequestMethod(HttpConnection.GET);
     connection.setRequestProperty(HttpHeaders.HEADER_CONNECTION, "close");
     connection.setRequestProperty(HttpHeaders.HEADER_CONTENT_LENGTH, "0");
     resCode = connection.getResponseCode();
     if( resCode == HttpConnection.HTTP_TEMP_REDIRECT
          || resCode == HttpConnection.HTTP_MOVED_TEMP
          || resCode == HttpConnection.HTTP_MOVED_PERM ) {
          location = connection.getHeaderField("location").trim();
     } else {
          resCode = connection.getResponseCode();
          break;
     }
}
3 голосов
/ 12 января 2010

Вам необходимо закодировать HttpConnection в цикле, который следует HTTP-перенаправлениям на основе кода ответа.

HTTP-заголовок "location" в ответе должен дать вам новый хост (возможно, его можно использовать для замены всего URL).

HttpConnection.HTTP_MOVED_TEMP и HttpConnection.HTTP_MOVED_PERM - это два кода ответа, которые указывают на перенаправление.

...