以下是适用于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中发送凭据
答案 0 :(得分:1)
有两种方法可以做到这一点,因为服务器处理身份验证的方式不同首先你可以使用这样的东西:
var req = WebRequest.Create(<your url>);
NetworkCredential creds = new NetworkCredential(<username>, <password>);
req.Credentials = creds;
var rep = req.GetResponse();
但是,如果您需要实际的Authroization标头,则需要使用this code
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();
如果您有任何疑问,请与我们联系。
答案 1 :(得分: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。