繁体   English   中英

使用C#针对PHP Web服务进行身份验证

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM