如何按照“页面自动重定向”来获取响应代码?

时间:2010-01-12 08:57:01

标签: blackberry java-me blackberry-jde rim-4.5 blackberry-os-v4.5

我使用以下代码获取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 个答案:

答案 0 :(得分:8)

我找到了解决方案, 这是有兴趣的人:

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;
     }
}

答案 1 :(得分:3)

您需要根据响应代码在HTTP重定向的循环内编写HttpConnection代码。

响应中的HTTP标头“location”应该为您提供一个新主机(也许它可以用来替换整个URL)。

HttpConnection.HTTP_MOVED_TEMPHttpConnection.HTTP_MOVED_PERM是指示重定向的两个响应代码。