Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“未经授权”在调用SOAP api C时#_C#_C# 4.0_Soap - Fatal编程技术网

C# &引用;“未经授权”在调用SOAP api C时#

C# &引用;“未经授权”在调用SOAP api C时#,c#,c#-4.0,soap,C#,C# 4.0,Soap,当使用下面的代码调用SOAP时,我得到了“Unauthorized”作为响应 NetworkCredential credentials = new NetworkCredential("username", "password"); var request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = credentials; try { WebResponse response =

当使用下面的代码调用SOAP时,我得到了“Unauthorized”作为响应

NetworkCredential credentials = new NetworkCredential("username", "password");
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = credentials;

   try
   {
       WebResponse response = request.GetResponse();
       using(Stream responseStream = response.GetResponseStream())
       {
            StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
            return reader.ReadToEnd();
       }
   }
   catch(WebException Ex)
   {
        WebResponse errorResponse = Ex.Response;
        using(Stream responseStream = errorResponse.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
            string errorText = reader.ReadToEnd();
        }
        throw;
    }
你能纠正我哪里错了吗

我收到错误:-“远程服务器返回了一个错误:(401)未经授权。”这应该可以正常工作

             HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
            string authInfo = "username" + ":" + "Password";
            authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));

            request.Headers[HttpRequestHeader.Authorization] = "Basic " + authInfo;
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

           using (var responseStream = response.GetResponseStream())
            {
               StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
        return reader.ReadToEnd();
            }

这不是一个错误。这是关于您的凭证的警告。您应该发送合法用户凭据以获得对端点的响应。请检查这个

NetworkCredential credentials = new NetworkCredential{
Username=//fill your username,
Password=//fill your password but be carefull, is it hashed or not?
};
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = credentials;

   try
   {
       WebResponse response = request.GetResponse();
       using(Stream responseStream = response.GetResponseStream())
       {
            StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
            return reader.ReadToEnd();
       }
   }
   catch(WebException Ex)
   {
        WebResponse errorResponse = Ex.Response;
        using(Stream responseStream = errorResponse.GetResponseStream())
        {
            StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
            string errorText = reader.ReadToEnd();
        }
        throw;
    }

@codran你能指导我如何使用它吗?你确定服务没有授权吗?它可以是普通的标题,也可以是请求。标题。添加(“用户名”,“XXXX”)请求。标题。添加(“密码”,“yyyy”)@abhi-我也试过了,但它也不起作用。这是你创建的soap API吗?如果没有,那么您需要了解有关如何为授权目的传递凭据的适当文档。某个地方可能有一个令牌头。针对的API不同。您可以使用基本身份验证在标头中传递凭据,它应该可以正常工作,但仍然会出现相同的错误远程服务器返回错误:(401)未经授权。您确定使用了正确的凭据吗?因为我目前正在为我的一个服务运行相同的代码,并且它正常运行。