문제

다음 코드를 사용하여 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"? 두 번째 링크 (첫 번째 링크가 리디렉션 된 링크)에서 반환 된 응답 코드를 어떻게 얻을 수 있습니까?"자동 편도 된 페이지의 새로운 응답을 얻으려면 "리디렉션 팔로우"와 같은 것이 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

나는 해결책을 찾았습니다. 여기서 관심있는 사람들을위한 것입니다.

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

다른 팁

응답 코드를 기반으로 HTTP 리디렉션을 따르는 루프 내부의 HTTPConnection을 코딩해야합니다.

응답의 HTTP 헤더 "위치"는 새로운 호스트를 제공해야합니다 (아마도 전체 URL을 교체하는 데 사용할 수 있음).

HttpConnection.HTTP_MOVED_TEMP 그리고 HttpConnection.HTTP_MOVED_PERM 리디렉션을 나타내는 두 개의 응답 코드입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top