2013-04-10 38 views
2

我必须扩展一个使用SOAP::WSDL与外部SOAP服务器通信的已建立的Web应用程序。要使用新的SOAP方法,我必须扩展应用程序以在Web应用程序中的用户会话中处理Cookie。如何替换SOAP :: WSDL中的LWP句柄?

我喜欢用HTTP::CookieJar::LWP如饼干罐为LWP::UserAgent,但我没有找到关于如何更换非(-persistent)-cookie感知LWP从SOAP :: WSDL用我自己的一个任何提示其加载/存储来自/进入Web应用程序会话的SOAP Cookie。 如何从SOAP :: WSDL中替换LWP句柄?

+0

您可以使用'$ soap-> get_client() - > set_proxy($ endpointurl,{cookiejar => $ cookiejar})''设置LWP句柄选项。 – user1937198 2013-04-10 11:32:39

回答

2

我不认为你需要改变完整的LWP。我甚至不认为你可以,因为SOAP :: WSDL的客户端是SOAP::Lite附带的SOAP::Transport::HTTP::Client。这又是LWP::UserAgent的一个子类,它继承了它的方法,但它也增加了你需要的东西。

所以你需要做的是设置客户端的cookie jar到你想要的。客户端的接口仍然是LWP :: UserAgent的接口,所以你的HTTP :: CookieJar :: LWP应该没问题。

您可以通过$interface->get_transport()方法与客户联系。一旦你有了,你可以使用LWP :: UserAgent的$ua->cookie_jar($cookie_jar_obj)方法。

$interface->get_transport->cookie_jar(HTTP::CookieJar::LWP->new); 

我相信这就是你需要做的。