.NET で Web サービス呼び出しに Cookie を設定する際に問題が発生しています。提供された wsdl の呼び出しを使用する前に、クライアント Web サイトへのログイン時に取得される Cookie を提供する必要があります。ログインして Cookie を取得するメソッドがあり、それを makeSearch メソッド (以下に示します) に渡します。ご覧のとおり、wsdl オブジェクトの cookieContainer に Cookie を設定しています。ただし、AdvancedSearch メソッドによって行われた要求を確認すると、フィドラーで Cookie が送信されていないことに気付きました。クライアントは Java でソリューションを提供しましたが、それを .NET に転送する際に問題が発生しています。
以下は 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;
}
誰でもアイデアや解決策をリストできますか?