4

次のコードを使用して、返された 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 番目のリンク (最初のリンクがリダイレクトされたリンク) から返される応答コードを取得するにはどうすればよいですか? 自動リダイレクトされたページの新しい応答を取得するために「リダイレクトに従う」のようなものはありますか?

前もって感謝します。

4

2 に答える 2

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;
     }
}
于 2010-01-12T11:42:27.423 に答える
3

応答コードに基づいて HTTP リダイレクトに従うループ内で HttpConnection をコーディングする必要があります。

応答の HTTP ヘッダー「場所」は、新しいホストを提供することになっています (URL 全体を置き換えるために使用できる可能性があります)。

HttpConnection.HTTP_MOVED_TEMPHttpConnection.HTTP_MOVED_PERMは、リダイレクトを示す 2 つの応答コードです。

于 2010-01-12T11:40:58.737 に答える