我在使用.NET调用web服务时遇到了设置cookie的问题。在使用提供的wsdl调用之前,我必须提供一个cookie,该cookie是在登录客户网站时获得的。我有一个方法来登录并检索cookie,然后将其传递给我的makeSearch方法(如下所示)。正如您所看到的,我正在为wsdl对象中的cookieContainer设置cookie;但是,当我检查AdvancedSearch方法发出的请求时,在fiddler中注意到没有发送cookie。客户端已经提供了Java解决方案,但转换为.NET时遇到了问题。
以下是Java代码中的解决方案:(port是传递的wsdl对象)
以下是Java代码中的解决方案:(port是传递的wsdl对象)
private static void setupClient(Object port, final String cookie) throws Exception {
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = http.getClient();
if (policy == null) {
policy = new HTTPClientPolicy();
http.setClient(policy);
}
policy.setCookie(cookie);
policy.setAutoRedirect(true);
}
我的代码如下:
public AdvancedSearchResult makeSearch(String cookie) {
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
AdvancedSearchResult searchResults = new AdvancedSearchResult();
Cookie cook= new Cookie("NAME", HttpUtility.UrlEncode(cookie));
searches.CookieContainer = new CookieContainer();
searches.CookieContainer.Add(newUri(www.test.com),cook);
searchResults = searches.AdvancedSearch("search params");
return searchResults;
}
有人能列出任何想法或解决方案吗?