У меня проблема с установкой файла cookie для вызова веб-службы в .NET. Перед использованием любого из вызовов wsdl, я должен предоставить файл cookie, полученный при входе на веб-сайт клиента. У меня есть метод для входа и получения cookie, где я затем передаю его в мой метод makeSearch (показанный ниже). Как вы видите, я устанавливаю cookie в cookieContainer для объекта wsdl; однако, когда я проверяю запрос, сделанный моим методом AdvancedSearch, я замечаю в fiddler, что куки не отправляются. Клиент предоставил решение на Java, но у меня возникла проблема с переносом этого на .NET.
Ниже приведено решение в коде Java: (порт - это переданный объект 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;
}
Кто-нибудь может перечислить какие-либо идеи или решения?