2017-01-22 10 views
1

JerseyJetty을 사용하여 구현 된 웹 서비스와 통신해야하는 Android 애플리케이션이 있습니다.Android 앱에서 Jersey 웹 서비스로 세션 ID 보내기

이 코드를 사용하여 들어오는 세션 ID를 읽을 수 있습니다 일을

private static void getCookie(HttpResponse httpResponse) 
{ 
    Header[] headers = httpResponse.getAllHeaders(); 
    for (int i=0; i < headers.length; i++) 
    { 
     Header h = headers[i]; 
     String s1 = h.getName(); 
     if(s1.equals("Set-Cookie")) 
     { 
      sessionCookieValue = h.getValue().split(";",2)[0]; 
      return; 
     } 
    } 
} 

이 보인다와 나는 쿠키 값이 같은 값을 얻을 : JSESSIONID=8pdfuwgduykls5cvj971ylrc

문제는 내가 돈 '이다 올바르게 보냈다. 웹 서비스는 세션 ID를 보유하기로되어있는 HttpServletRequest 매개 변수로 주입되지만 그렇지 않습니다.

내가이처럼 전달하는 데 노력하고있어 방법 :

DefaultHttpClient client = new DefaultHttpClient(); 
CookieStore cookieStore = new BasicCookieStore(); 
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", sessionCookieValue); 
cookie.setPath("/"); 
cookie.setDomain(MyApplication.WEB_SERVICE_BASE_ADDRESS); //"192.168.200.158/" 
cookieStore.addCookie(cookie); 
client.setCookieStore(cookieStore); 
HttpResponse httpResponse; 
try 
{ 
    httpResponse = client.execute(request); 
     ... 
} 

가 왜 세션 ID는 웹 서비스의 요청에 주입되지 않는 이유는 무엇입니까?

+1

쿠키 도메인 설정을 시도하십시오. 또한 코드에서 쿠키 이름은 "쿠키"입니다. 나는 "JSESSIONID"이어야하기 때문에 그것은 더미 값이라고 생각한다. –

+0

정확히 도메인은 무엇이되어야 하는가? IP 주소가 –

+0

인 웹 서비스에 연결하는 중 쿠키 도메인 값을 IP 주소 –

답변

1

나는 마침내 문제를 알아 냈습니다.

초기 의견은 정확합니다. BasicClientCookie의 쿠키 키는 "JESSIONID"여야합니다. 경로와 도메인은 내가 한 것처럼 설정해야합니다.

주된 문제는 간단히 "sessionCookieValue"에서 "JSESSIONID ="접두사를 삭제하는 것이 었습니다. 내가 그것을 제거한 후에, 모든 것이 효과가있었습니다.