2012-01-03 9 views
3

.NETのWebサービスコールにCookieを設定する際に問題が発生しています。提供されているwsdlの呼び出しのいずれかを使用する前に、私はクライアントのWebサイトにログインして取得したCookieを提供する必要があります。私はログインしてクッキーを取得するメソッドを持っています。次に、それを私のmakeSearchメソッドに渡します(下記参照)。ご覧のとおり、wsdlオブジェクトのcookieContainerにCookieを設定しています。しかし、私は私のAdvancedSearchメソッドで行われたリクエストをチェックすると、私はバイヤーが送信されていないことをフィドラーに気付いています。クライアントはJavaでソリューションを提供しましたが、.NETにその問題を転送する問題があります。.NETでWebサービスコールを使用してCookieを送信する

は、次のJavaコードでのソリューションです:

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; 

}

でき、誰リスト:

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); 
} 

私のコードは以下の通りです(ポートが渡されたWSDLオブジェクトです)任意のアイデアやソリューション?ここ

+0

それは見ていません(サーバー側のCASのセキュリティ需要がある)セキュリティ例外が発生しますクッキーを正しく設定する。クッキー文字列の値は、クッキー自体の内容、またはNAMEパラメータの値ですか? – Alan

+0

クッキー文字列値の内容です。 makeSearch()メソッドに渡されるCookie文字列値は、別のメソッドによって取得されています。別の方法がありますか? –

答えて

4

私はちょうどこれと同じ問題を抱えていたとは、私は

var tmWebServices    = new TM_WebServices(); 
tmWebServices.CookieContainer = new System.Net.CookieContainer(); 
tmWebServices.Url    = Test_TM.tmWebServices; 

var username  = "reader"; 
var passwordHash = Test_TM.passwordHash_Reader; 
var sessionID = tmWebServices.Login(username, passwordHash); 

//Note that this is optional if you set these cookies from the server side 
var cookie  = new System.Net.Cookie("Session",sessionID.str()); 
tmWebServices.CookieContainer.Add(tmWebServices.Url.uri() , cookie); 

var guidanceItemID = "0c85a318-0c32-4417-9d72-7475bb96517e".guid(); 

var guidanceItemHtml = tmWebServices.GetGuidanceItemHtml(guidanceItemID); 

return "{0}".format(guidanceItemHtml); 


//using O2.SecurityInnovation.TeamMentor 
//O2File:TM_WebServices.cs 
//O2File:Test_TM_Config.cs 
//O2Ref:System.Web.Services.dll 

鍵は、サーバから送信されたクッキーを作っ

tmWebServices.CookieContainer = new System.Net.CookieContainer(); 

がさらに要求に再送されるように追加されたことを解決する方法であります。上記の例では

、有効なセッションCookieの値なしGetGuidanceItemHtmlを呼び出す場合、あなたがしているよう

関連する問題