2017-01-22 10 views
1

JerseyJettyを使用して実装されたWebサービスと通信するはずのAndroidアプリケーションがあります。Android AppからJersey Webサービスへのセッション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

問題は、私はドンということです」それを適切に送るようです。 Webサービスには、セッションIDを保持するはずのHttpServletRequestパラメータが挿入されていますが、これは実行されません。

私はそれを渡すためにしようとしている方法は、このようなものです:セッションIDは、Webサービスにおける要求に注入されていないのはなぜ

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); 
     ... 
} 

+1

クッキードメインを設定してください。また、あなたのコードでは、クッキー名は「Cookie」です。私はそれが "JSESSIONID"でなければならないので、それはダミー値だと思う –

+0

ドメインは正確に何か?私はIPアドレスを持つWebサービスに接続しています。 –

+0

を取得してから、cookieドメインの値をIPアドレス –

答えて

1

私は最終的に問題を把握しました。

最初のコメントは正しい - BasicClientCookieのクッキーのキーは "JESSIONID"にする必要があります。パスとドメインは、私がそこで行ったのと同じように設定する必要があります。

主な問題は、単に「JSESSIONID =」接頭辞を `sessionCookieValue 'から削除することでした。私はそれを削除した後、すべてが働いた。

関連する問題