2009-05-28 17 views
1

私はWSDLから作成されたWeb参照を持っていますが、ユーザー名/パスワードを渡さないとその関数を呼び出すことはできません。 XMLツールキットのためのオリジナルのコードは:Web参照によるHTTP認証

Set client = CreateObject("MSSOAP.SOAPClient30") 
URL = "http://" & host & "/_common/webservices/Trend?wsdl" 

client.mssoapinit (URL) 

client.ConnectorProperty("WinHTTPAuthScheme") = 1 
client.ConnectorProperty("AuthUser") = user 
client.ConnectorProperty("AuthPassword") = passwd 

On Error GoTo err 
Dim result1() As String 

result1 = client.getTrendData(expression, startDate, endDate, 
       limitFromStart, maxRecords 

私は私の新しいコードにAUTHUSER /をauthPasswordを追加するにはどうすればよいですか?

新コード:

ALCServer.TrendClient tc = new WindowsFormsApplication1.ALCServer.TrendClient(); 

    foreach(string s in tc.getTrendData(textBox2.Text, "5/25/2009", "5/28/2009", false, 500)) 
     textBox1.Text+= s; 

答えて

1

はそれを見つけた:事前認証が== trueの場合、それはそれをしない場合であっても。

protected override System.Net.WebRequest GetWebRequest(Uri uri) 
    { 
     HttpWebRequest request; 
     request = (HttpWebRequest)base.GetWebRequest(uri); 

     if (PreAuthenticate) 
     { 
      NetworkCredential networkCredentials = 
       Credentials.GetCredential(uri, "Basic"); 

      if (networkCredentials != null) 
      { 
       byte[] credentialBuffer = new UTF8Encoding().GetBytes(
        networkCredentials.UserName + ":" + 
        networkCredentials.Password); 
       request.Headers["Authorization"] = 
        "Basic " + Convert.ToBase64String(credentialBuffer); 
      } 
      else 
      { 
       throw new ApplicationException("No network credentials"); 
      } 
     } 
     return request; 
    } 

それは部分クラスとして作成されますので、あなたは別のファイルにスタブを保つことができるし、Reference.csを再構築することは、あなたを壊しません。あなたは、WebRequestクラスをoverriedする必要があります。

関連する問題