2009-11-24 9 views
1

https 사이트에 연결해야하는 애플리케이션이 있습니다. 연결로 모두 괜찮습니다,하지만 난는 getInputStream()가 오는 어떤 경우 예외 :https를 통해 사이트에 연결

때 java.io.IOException : 서버 반환 된 HTTP 응답 코드 : URL에 대한 403 : 여기

코드의 일부입니다

String query = siteURL.toExternalForm(); 

    URL queryURL = new URL(query); 

    String data = "username="+login+"&password="+password; 

    URLConnection connection = queryURL.openConnection(); 

    connection.setDoOutput(true); 

    OutputStreamWriter writer = new OutputStreamWriter(connection 
      .getOutputStream()); 
    writer.write(data); 
    writer.flush(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
+0

사용자 이름과 비밀번호가 매개 변수로 사용 하시겠습니까? 일반적으로 (특히 보안면에서) 요청 헤더가 있습니다. – Trick

+0

하지만 브라우저를 통해이 리소스에 연결하려고하면 모두 괜찮습니다. 예를 들면 : 경우 쿼리 = https : //로 URL/WebHome 데이터 = 사용자 이름 = 테스트 및 암호 = 시험 은 https : URL이/WebHome 이름 = 테스트 및 암호 = 시험 –

+0

내가 그렇게 시도 // connection.addRequestProperty (" 사용자 이름 ", 로그인); connection.addRequestProperty ("password", password); 하지만 같은 문제는 ... –

답변

1

당신이하려는 일을 할 수없는 것 같아서 HTTP 403: Forbidden이 표시됩니다.

브라우저에서 동일한 URL을 열 수 있습니까?

+0

브라우저에서 열 수있는 재미있는 점 그리고 실제로 connection.connect(); 는 연결 변수는 그것은하지 ... –

1

사이트에 사용자 정의 인증 메커니즘이 있다고 생각합니다. 사용자 이름과 비밀번호를 GET 매개 변수로 제공해야합니다. 그래서 당신의 URL은 다음과 같이한다 : 당신이 url.openConnection를 사용하는 경우 HTTP GET 요청은

URL url = new URL("http://somesite.org/page?username=<username>&password=password"); 
... = url.openConnection(); 
... 

을 수행합니다. 요청과 함께 데이터를 보내려면 HTTP POST 요청을 사용해야합니다. 이 경우 Apache Commons HttpClient와 같은 타사 라이브러리를 사용할 수 있습니다.

현재 : 새 URL 개체가있는 경우 생성하는 이유는 무엇입니까?

+0

거짓없는 작품 (( BTW : 이미 나는 단지 하나의 URL 객체가 >> 하나 이있는 경우 왜 u는, 새로운 URL 객체를 작성 -> queryURL –

+0

를? 그러나 Salandur는 아마도 맞을 것입니다. 서버에 GET 요청을하고 있지만 요청 본문에 요청 매개 변수를 쓰려고 시도합니다. 일반적으로 POST 요청으로 만 지원됩니다. – jarnbjo

+0

@Le_Coeur : 다른 요청이 있어야합니다. 당신은 문자열 쿼리 = siteURL.toExternalForm(); – Salandur

관련 문제