身份验证失败,因为远程方已关闭传输流。 C#HTTP发布请求

时间:2018-10-24 11:41:42

标签: c# rest api

我正在尝试一个简单的REST请求以获取响应。 代码在webRequest.GetRequestStream()处失败,并显示以下错误

  

System.Net.WebException     HResult = 0x80131509     消息=基础连接已关闭:发送时发生意外错误。     来源=系统     堆栈跟踪:      在System.Net.HttpWebRequest.GetRequestStream(TransportContext&context)      在System.Net.HttpWebRequest.GetRequestStream()      在Com.VMware.Api.ApiClient.HttpPost(Uri uri,Dictionary`2 headers,String body)在E:\ MyWork \ CSPClientProject \ Com.VMware \ Com.VMware \ ApiClient.cs:line 48中      在Com.VMware.CSP.CSPAPIService.GetAccessTokenByAPIRefreshToken(String refreshToken)中的E:\ MyWork \ CSPClientProject \ Com.VMware \ Com.VMware \ CSP \ CSPAPIService.cs:line 39      在E:\ MyWork \ CSPClientProject \ Com.VMware \ RefreshAndAccessTokenSample \ TestRefreshAndAccessTokenSample.cs:line 20

中的RefreshAndAccessTokenSample.TestRefreshAndAccessTokenSample.Main(String [] args)

内部异常1: IOException:身份验证失败,因为远程方已关闭传输流。

这是完整的代码

public Dictionary<int, string> HttpPost(Uri uri, Dictionary<String, String> headers, String body)
    {
        Dictionary<int, string> responseMap = new Dictionary<int, string>();
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
        webRequest.Method = "POST";
        foreach (KeyValuePair<string, string> kvp in headers)
        {
            if (kvp.Key.Equals("Content-Type"))
                webRequest.ContentType = kvp.Value;
            else if (kvp.Key.Equals("Accept"))
                webRequest.Accept = kvp.Value;
        }
        byte[] bytes = Encoding.UTF8.GetBytes(body);
        int contentLength = bytes.Length;
        webRequest.ContentLength = contentLength;
        Stream outputStream = webRequest.GetRequestStream();
        outputStream.Write(bytes, 0, bytes.Length);
        outputStream.Close();
        WebResponse response = (HttpWebResponse)webRequest.GetResponse();
        //create responseMap based upon response
        response.Close();
        return responseMap;
    }

0 个答案:

没有答案