>  기사  >  Java  >  HttpURLConnection의 setRequestProperty() 메서드를 사용하여 헤더를 설정할 수 없는 이유는 무엇입니까?

HttpURLConnection의 setRequestProperty() 메서드를 사용하여 헤더를 설정할 수 없는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-09 09:24:02409검색

Why Am I Unable to Set Headers Using HttpURLConnection's setRequestProperty() Method?

HttpURLConnection 요청에 헤더를 추가하는 방법

HTTP 요청 작업 시 사용자 정의 헤더를 추가하는 것은 요청 인증, 추가 데이터 전송, 서버 동작을 제어합니다. 그러나 사용자는 HttpURLConnection의 setRequestProperty() 메서드에 문제가 발생하여 그 효율성에 의문을 제기했습니다. 이 문서에서는 문제를 자세히 살펴보고 해결책을 제공합니다.

제공된 코드는 setRequestProperty()를 사용하여 HTTP 요청에 Authorization 헤더를 추가하려는 시도를 보여줍니다. 그러나 서버는 헤더를 수신하지 못하는 것으로 알려졌습니다.

이 문제를 해결하려면 헤더가 올바르게 전송되고 있는지 확인하는 것이 중요합니다. 한 가지 가능한 문제는 헤더가 설정되기 전에 요청 본문이 이미 작성되었다는 것입니다. 이러한 경우 헤더가 요청에 포함되지 않을 수 있습니다. 이 문제를 해결하려면 출력을 작성하기 전에 헤더를 설정해야 합니다.

또는 제공된 솔루션에 설명된 것처럼 다른 접근 방식을 사용하여 헤더를 추가할 수 있습니다.

URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();

String userCredentials = "username:password";
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));

myURLConnection.setRequestProperty ("Authorization", basicAuth);
myURLConnection.setRequestMethod("POST");
myURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
myURLConnection.setRequestProperty("Content-Length", "" + postData.getBytes().length);
myURLConnection.setRequestProperty("Content-Language", "en-US");
myURLConnection.setUseCaches(false);
myURLConnection.setDoInput(true);
myURLConnection.setDoOutput(true);

이것은 코드는 POST 요청을 구성하고 Base64 인코딩을 사용하여 올바른 구문으로 Authorization 헤더를 수동으로 설정합니다. 헤더를 명시적으로 설정하면 해당 헤더가 요청에 포함됩니다. 또한 본문이 있는 POST 요청에 중요한 Content-Length 헤더도 설정됩니다.

이러한 솔루션을 구현하면 사용자는 HttpURLConnection 요청에 사용자 지정 헤더를 효과적으로 추가하여 적절한 요청 인증 및 제어를 활성화할 수 있습니다.

위 내용은 HttpURLConnection의 setRequestProperty() 메서드를 사용하여 헤더를 설정할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.