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 중국어 웹사이트의 기타 관련 기사를 참조하세요!