2016-04-05 15 views
-1

Spring-WS ile yazılmış bir SOAP web hizmeti istemcisi var. Oturum açma isteğine yanıt olarak, bağlandığım web hizmeti, HTTP yanıt başlığında içinde bir simge bulunan bir oturum çerezi döndürür. Hizmete yapılan her bir çağrı, bu simgeyi belirteci ile gerektirir. Oturum çerezini yanıttan nasıl alabilirim ve daha sonra hizmete yapılan sonraki çağrılardaki HTTP başlığına ekleyebilir miyim?Spring-ws sabunlu web hizmet istemcisinde http oturum çerezlerini alma

Ne istediğimi özetlemek gerekirse, Spring-WS ile çerezleri nasıl ayıklayıp enjekte edersiniz? İşte

ben web hizmeti aramaktan kullanıyorum ne benzer bir kod parçacığı İşte: Ben internet arama ve neye ihtiyacım yakın görünmek çok şey okudum

MySessionLogon api = new MySessionLogon(); 
    api.setUsername(username); 
    api.setPassword(password); 

    MySessionLogonResponse response = (MySessionLogonResponse) getWebServiceTemplate() 
      .marshalSendAndReceive(
        "http://myserver/soapservice.asmx", 
        api, 
        new SoapActionCallback("http://www.myserver.com/MySession_Logon")); 

    return response; 

ama Kullanmam gereken çerezlerin değerini almak için iyi bir yol görmedim. Herhangi bir yardım, şimdiden teşekkürler takdir edilecektir.

cevap

0

WebServiceMessageExtractor'u kontrol ettiniz mi?

Sen tepki VirtualTroll için aşağıdaki

MySessionLogonResponse response = (MySessionLogonResponse) getWebServiceTemplate() 
      .sendAndReceive(
        "http://myserver/soapservice.asmx", 
        api, 
        new SoapActionCallback("http://www.myserver.com/MySession_Logon"), 
new WebServiceMessageExtractor<ResponseAndHeader>() { 
    public ResponseAndHeader extractData(WebServiceMessage message) throws IOException { 
    TransportContext context = TransportContextHolder.getTransportContext(); 
    HttpComponentsConnection con = (HttpComponentsConnection) context.getConnection(); 
    httpResponse httpResponse = con.getHttpResponse(); 
    //use the method getHeaders from to retrieve the data you want  
    }); 
+0

Teşekkür yapabilirdi. Sadece bir not, marshalSendAndReceive yanıtınızda gösterildiği gibi dört parametreyi kabul etmez. Sanırım WebServiceTemplate tarafından sağlanan diğer SendAndReceive yöntemlerinden birini kullanmam gerekecek. – Woody

+0

Cevabımı güncelledi. Sorunu kullanarak probleminizi çözebildiniz mi? – VirtualTroll

+0

Uzun gecikme için özür dilerim, ama farklı bir rotaya giderek problemimi çözdüm. Http://stackoverflow.com/questions/25189129/spring-ws-client-set-cookie-for-authentication ile benzer bir çözümden şu değerli girdilerden faydalandım: ve diğerleri arasında. Bu yoldan gitmesem bile girişiniz için tekrar teşekkürler. @VirtualTroll – Woody

İlgili konular