0

動作するPHPWebサービスクライアントのサンプルコードは次のとおりです。

 $options = array();
 $options['trace'] = 1;   
 $options['login'] = 'username';
 $options['password'] = 'password';    
 $client = new SoapClient("http://wsurl.com/pt/wsdl", $options);

c#を使用してこのWebサービスにアクセスしたいのですが、認証に苦労しています。石鹸ヘッダーを明示的に設定する必要がありますか、それとも.NETでクレデンシャルを送信するための組み込みの方法がありますか?

4

2 に答える 2

1

サーバーは認証を異なる方法で処理するため、これを行うには 2 つの方法があります。まず、次のようなものを使用できます。

var req = WebRequest.Create(<your url>);
NetworkCredential creds = new NetworkCredential(<username>, <password>);
req.Credentials = creds;

var rep = req.GetResponse();

ただし、実際の Authorization ヘッダーが必要な場合は、このコードを使用することをお勧めします

public void SetBasicAuthHeader(WebRequest req, String userName, String userPassword)
{
 string authInfo = userName + ":" + userPassword;
 authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
 req.Headers["Authorization"] = "Basic " + authInfo;
}

そして、あなたのリクエストコードは

var req = WebRequest.Create(<your url>);
SetBasicAuthHeader(req, username, password);
rep = req.GetResponse();

ご不明な点がございましたら、お知らせください。

于 2012-08-02T20:10:03.620 に答える
0

C# プロジェクトにサービス参照を追加すると、次のようにサービスを呼び出すことができます。

var proxy = new YourServiceClient();
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "password";

詳細については、http: //msdn.microsoft.com/en-us/library/ms733775.aspxを参照してください。

于 2012-08-02T20:13:18.173 に答える