Java의 HTTP 요청에 헤더를 추가하십시오
-
19-09-2019 - |
문제
간단한 HTTP 요청을 보내기 위해이 코드를 사용하고 있습니다.
try
{
Socket s = new Socket ();
s.bind (new InetSocketAddress (ipFrom, 0));
s.connect (new InetSocketAddress (ipTo, 80), 1000);
PrintWriter writer = new PrintWriter (s.getOutputStream ());
BufferedReader reader = new BufferedReader (new InputStreamReader (s.getInputStream ()));
writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n");
writer.flush ();
s .close ();
reader.close ();
writer.close ();
}
그러나 보시다시피, 나는 사용자 정의 헤더를 보내지 않습니다. 사용자 정의 헤더를 보내려면 무엇을 추가해야합니까?
건배,
크리스토프 올리비에
해결책
당신이 쓸 때
writer.print ("GET " + szUrl + " HTTP/1.0\r\n\r\n");
그만큼 \r\n\r\n
비트는 선을 끝내기 위해 라인 피드/캐리지 성장을 보내고 다른 하나는 더 이상 헤더가 없음을 나타냅니다. 이것은 HTTP와 이메일 형식의 표준입니다. 즉, 빈 줄은 헤더의 끝을 나타냅니다. 추가 헤더를 추가하려면 완료 될 때까지 해당 시퀀스를 보내지 않아도됩니다. 대신 다음을 수행 할 수 있습니다
writer.print ("GET " + szUrl + " HTTP/1.0\r\n");
writer.print ("header1: value1\r\n");
writer.print ("header2: value2\r\n");
writer.print ("header3: value3\r\n");
// end the header section
writer.print ("\r\n");
다른 팁
HTTP를 직접 구현하는 대신 Bozho가 언급 한 httpcomponents를 시도해 보더라도 사용자 정의 헤더를 추가하는 방법입니다.
writer.print ("GET " + szUrl + " HTTP/1.0\r\n");
writer.print ("X-MyOwnHeader: SomeValue\r\n");
HTTP 연결에 사용되도록 이미 준비된 클래스를 사용해야합니다. HTTPUrlConnection
그것은 어린이입니다 UrlConnection
이 방법이 있습니다
void setRequestProperty(String key, String value)
요청의 매개 변수를 설정하는 데 사용해야합니다 ( 헤더 필드) .. 점검 여기 참조
URLConnection을 볼 수도 있습니다.
http://java.sun.com/j2se/1.4.2/docs/api/java/net/urlconnection.html
당신이 절대적으로 직접해야한다면, 그것은 자체 라인의 각 헤더와 함께이 형식을 따라야합니다.
이름 : 가치
HTTP 사양의 헤더 형식을 살펴보십시오.
http://www.w3.org/protocols/http/1.0/draft-ietf-http-spec.html#message-headers