0

这是适用于 PHP Webservice 客户端的示例代码:

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

我想使用 c# 访问此 Web 服务,但很难进行身份验证。我是否需要显式设置soap标头或者有一种内置的方式在.NET中发送凭据

4

2 回答 2

1

有两种方法可以做到这一点,因为服务器处理身份验证的方式不同。首先你可以使用这样的东西:

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

var rep = req.GetResponse();

但是,如果您需要一个实际的授权标头,您将需要使用此代码

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 回答