Как выполнить "перенаправление страницы", чтобы получить код ответа?
Я использую следующий код, чтобы получить возвращенный код ответа на странице 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 ответа
Я нашел решение, вот оно для тех, кому интересно:
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;
}
}
Вам необходимо кодировать HttpConnection внутри цикла, который следует HTTP-перенаправлениям на основе кода ответа.
HTTP-заголовок "location" в ответе должен дать вам новый хост (возможно, его можно использовать для замены всего URL).
HttpConnection.HTTP_MOVED_TEMP
а также HttpConnection.HTTP_MOVED_PERM
два кода ответа, которые указывают на перенаправление.