2017-02-25 8 views
1

휴식 요청을 얻으려고합니다. 추천 된 방법으로 쿠키를 가져올 수 있었지만 다음 요청을 처리 할 수 ​​없습니다. 제목에 나열된 응답은 다음 조건에서 반환됩니다.반환 된 값을 찾을 수 없거나 "지정된 값에 유효하지 않은 HTTP 헤더 문자가 있습니다 매개 변수 이름 : 이름"

foreach(RestResponseCookie a in response.Cookies){ 
if(a.Name == "JSESSIONID") 
       { 
        request.AddHeader("cookie:" + a.Name, a.Value); 
       } 
} 
response = client.Execute(request); 

이렇게하면 "지정된 HTTP 헤더 문자가 잘못되었습니다. 매개 변수 이름 : 이름이 "

대신 반환됩니다

  request.AddCookie(a.Name, a.Value); 

통해 추가하려고"수동으로 사이트에 갈 때 내가 요청을받을 수 있지만, "찾을 수 없습니다.

편집 1.

설명서에서 명시 적으로 언급 한 쿠키 대신 모든 쿠키를 처리하여 수정할 수있었습니다.

client.CookieContainer = new CookieContainer(); 
foreach(RestResponseCookie a in response.Cookies){ 
    if(a.Expires == new DateTime(0))//remove expiring cookie as stated in dat3450's answer 
     client.CookieContainer.Add(newCookie() {Name = a.Name, Value = a.Value, Path = a.Path, Domain = a.Domain}); 
} 

답변

1

위의 코드에서 요청에 몇 가지 추가 쿠키가 포함되어있는 것으로 보입니다.

  • JSESSIONID
  • studio.crowd.tokenkey
  • atlassian.xsrf.token

당신이 할 수있는 값 : JIRA API를 통해 유효한 요청을 보낼 필요 세 쿠키있다 유효한 로그인 응답에서 JSESSIONID 쿠키를 얻는 동일한 장소에서 이러한 쿠키를 가져옵니다. 응답의 모든 Set-Cookie 헤더를 살펴보고 Expires 매개 변수가있는 studio.crowd.tokenkey을 제외한 모든 메시지를 사용하십시오.

JIRA API 참조 페이지는 이에 대한 많은 정보를 실제로 표시하지 않으므로 여기에서 몇 가지 추가 정보를 찾을 수 있습니다. https://confluence.atlassian.com/cloud/cookies-744721661.html