Java URLConnection의 사용자 에이전트 설정
URLConnection으로 Java를 사용하여 웹페이지를 구문 분석하려고 시도하고 사용자 에이전트를 지정된 값 끝에 추가 "Java/1.5.0_19"가 추가될 수 있습니다. 이는 이전 버전의 Java의 제한으로 인해 발생합니다.
솔루션(Java 1.6.30 이상)
Java 1.6.30 이상에서 이 문제는 해결되었습니다. 이제 setRequestProperty("User-Agent", "Mozilla ...")를 사용하여 사용자 에이전트를 설정하면 Java 버전을 추가하지 않고도 올바르게 작동합니다.
확인
확인하려면 그러면 들어오는 요청의 원시 HTTP 헤더를 표시하는 netcat을 사용하여 포트에서 수신 대기할 수 있습니다. 사용자 에이전트를 설정하지 않으면 헤더에 다음이 표시됩니다.
GET /foobar HTTP/1.1 User-Agent: Java/1.6.0_30 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
사용자 에이전트를 설정하면 헤더에 다음이 표시됩니다.
GET /foobar HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
예제 코드(Java 1.6. 30 )
다음 코드 예제는 사용자를 올바르게 설정하는 방법을 보여줍니다. 상담원:
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class TestUrlOpener { public static void main(String[] args) throws IOException { URL url = new URL("http://localhost:8080/foobar"); URLConnection hc = url.openConnection(); hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); System.out.println(hc.getContentType()); } }
위 내용은 Java URLConnection에서 사용자 에이전트를 올바르게 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!