[英]Authenticate against PHP webservice using C#
这是适用于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中发送凭据?
有两种方法可以执行此操作,因为服务器对身份验证的处理方式不同。 首先,您可以使用以下方式:
var req = WebRequest.Create(<your url>);
NetworkCredential creds = new NetworkCredential(<username>, <password>);
req.Credentials = creds;
var rep = req.GetResponse();
但是,如果您需要实际的Authroization标头,则需要使用此代码
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();
如果您有任何疑问,请告诉我。
如果在C#项目中添加服务引用,则可以这样调用服务:
var proxy = new YourServiceClient();
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "password";
可以在这里找到更多信息: http : //msdn.microsoft.com/en-us/library/ms733775.aspx 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.