2013-07-26 3 views
0

java.net.HttpURLConnection을 사용하고 있습니다.응답을 받기 전에 HTTP 게시 요청의 인증 상태를 확인할 수 있습니까?

먼저 URL 요청에 대한 본문을 URLConnection 객체와 연결된 OutputStream에 씁니다.

내가 해낸 후에는 OutputStream을 닫은 다음 getInputStream() 또는 getResponseCode() 또는 getHeaderFields()를 호출합니다. 그 때 제공된 자격 증명이 유효하거나 유효하지 않은 것으로 판단되는 경우입니다.

사용자 자격 증명이 어떤 이유로 거부 된 경우 동일한 게시물 요청을 다시하고 싶지 않고 (대용량 파일을 포함 할 수있는 내용을 다시 업로드해야 함)이 문제가 있습니다.

getResponseCode() 또는 getHeaderFields()가 호출 된 후 getOutputStream()을 호출하려는 경우 예외가 발생하므로 데이터를 업로드하기 전에 사용자 자격 증명이 수락되었는지 어떻게 확인할 수 있습니까?

이 문제를 해결할 수있는 방법이 있습니까? 아니면 서버가 구성되어있는 것입니까?

+1

그렇지 않습니다. 기본 인증은 상태가 없으므로 자격 증명을 요청과 함께 보내야합니다. 별도의 인증 및 세션 관리가있는 웹 서비스를 작성해야합니다. –

답변

1

짧은 대답은 : 당신은 그렇게 할 수 없습니다.

기본 인증은 상태 비 저장입니다. POST/PUT을 수행 할 때 사용자 자격 증명은 해당 HTTP 요청의 헤더로 전송됩니다. 전체 작업이 완료 될 때까지 (즉, 데이터 페이로드를 보낸 후에) 처리되지 않습니다.

세션 관리를 통해 별도로 로그인 및 파일/데이터 업로드를 관리하는 웹 서비스를 작성해야하므로 먼저 인증을받을 수 있습니다 (세션 토큰 반환) 그런 다음 별도의 HTTP 요청을 통해 데이터를 보냅니다.

편집 추가 : 현실에서, 당신은 단순히 또한 인증을 필요로 뭔가에 GET을 수행하여이 주위에 당신의 방법을 해킹 할 수있다. 성공하면 POST가 두 요청 사이의 무효화 된 서버 측 자격 증명을 계속 통과 할 것임을 알 수 있습니다. 나는 이것을 권하지 않겠지 만 효과가있을 것이다.