2012-10-06 4 views
5

URLConnection을 통해 '전체'쿠키를 보내는 적절한 방법은 무엇입니까?URLConnection에서 쿠키를 보내는 방법은 무엇입니까?

내가 사용하고 :

URL url = new URL(page); 
URLConnection urlConn = url.openConnection(); 

urlConn.setRequestProperty("Cookie", myCookie); 

urlConn.setUseCaches(true); 

urlConn.connect(); 

위 예제 코드는 MyCookie 값입니다 testCookie = d1lEZk9rSHd3WnpBd2JkWGRhN1RYdz09OkEwQ21pSFJVZzBpVDhhUENaK3ZPV2c9PQ

경로, 도메인을 보낼 수있는 방법이 있나요, 그것으로 만료? 값을 어떤 식 으로든 인코딩해야합니까? 당신은 아마 대신 addRequestProperty 방법을 사용할 수있는 것보다 하나 개 이상의 쿠키를 설정하는 경우

urlConn.setRequestProperty("Cookie", "user=mary17; domain=airtravelbargains.com; path=/autos"); 

: 한 쿠키를 설정하는 경우

답변

3

글쎄, 난 당신처럼 간단하게 할 수있는 것 같아요.

만료 속성은 평일, DD-Mon-YY HH : MM : SS GMT 형식을 사용해야합니다.

유일한 법적 표준 시간대는 GMT이며 날짜 요소 사이의 구분 기호는 이어야합니다.

12

This (currently accepted) answer 잘못이다 - HTTP에 대한 클라이언트 여러 쿠키 값에 대한 ; 구분 기호를 사용하여 자신의 예를 실제로 세 coookies 전송 있도록 :

  • user=mary17
  • domain=airtravelbargains.com
  • path=/autos

우리가 새끼에 대해 이야기하고 있다면 ver 응답과 Set-Cookie 헤더를 사용하면 대답은 옳을 것이지만 우리는 그렇지 않습니다. urlconnection은 클라이언트가 서버에 연결하는 것입니다.

그럼 Domain, Expires, Path 정보는 무엇인가요? 문제는 은 해당 정보를 보낼을 의미하지 않습니다. 경로, 도메인 및 만료는 클라이언트를위한 지침이므로 브라우저 (또는 다른 HTTP 클라이언트)로 전송하기위한 지침 일뿐입니다. 유효한 쿠키 값을으로 서버에 보내려고 했으므로 요청한 정보를 보낼 방법이 없습니다. 이유는 알 수 없기 때문입니다.

브라우저에서 HTTP 세션을 탐색하여 직접 볼 수 있습니다. 브라우저는 다음과 같은 정보 만 전송합니다.

Cookie: cookiename=value; anothercookie=othervalue; 

이는 예상대로입니다. 브라우저에서 보낸

또는, 당신은 당신이 Domain, ExpiresPath가 (브라우저로 전송)을 Set-Cookie 헤더의 속성입니다 내용의 테이블에서 직접 볼 수 RFC 6265을 검사 할 수 있습니다,하지의 Cookie 헤더 (또는 서버에 대한 다른 http 클라이언트).

관련 문제