如何使用Web请求通过身份验证调用Web服务

时间:2016-06-16 04:15:06

标签: c# web-services webrequest

我有需要身份验证的网络服务。

public class WebService : System.Web.Services.WebService
{
    public AuthHeader Authentication;

    [WebMethod]
    [SoapHeader("Authentication", Required = true)]
    public void Hello(string name)
    {
        string result = "";
        if (Authentication.Username == "test" && Authentication.Password == "test")
        {
            result = "hello " + name;
        }

        Context.Response.Write(new JavaScriptSerializer().Serialize(result));
    }
}

public class AuthHeader : SoapHeader
{
    public string Username;
    public string Password;
}

我曾经像这样调用网络服务

        WebRequest request = WebRequest.Create(url);
        WebResponse ws = request.GetResponse();

        string result = string.Empty;
        using (System.IO.StreamReader sreader = new System.IO.StreamReader(ws.GetResponseStream()))
        {
            result = sreader.ReadToEnd();
        }

但我不知道如何通过身份验证来实现。如何设置Web请求的标头以进行身份​​验证?

1 个答案:

答案 0 :(得分:0)

根据此msdn资源:https://msdn.microsoft.com/en-us/library/system.net.webrequest(v=vs.110).aspx WebRequest有一个名为Credentials的属性。

  

在后代类中重写时,获取或设置网络   用于通过Internet验证请求的凭据   资源。

尝试使用它并查看它是否有效。