HttpWebRequest 不起作用,但 Postman 可以
HttpWebRequest doesn't work, but Postman does
我正在尝试使用下面的代码通过 WebHttpRequest 获取一个 json 字符串(它会尝试调用一个文件,该文件将 return 我的 json 位于应用)。它在我的机器上运行,但是当我部署到用户服务器时,出现错误
"The underlying connection was closed: An unexpected error occurred on
a send.".
当我尝试 运行 URL 的 powershell invoke-webrequest 时,我遇到了同样的错误,但奇怪的是,当我使用 Postman(get 或 post)时它工作正常对于 URL,用户服务器内部或外部。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
String jsonResponse = reader.ReadToEnd();
我也尝试过使用另一种方法 (WebClient) 获取 URL,但效果不佳。
String jsonResponse = null;
using (var webClient = new WebClient())
{
jsonResponse = webClient.DownloadString(url);
}
我在异常中得到的完整错误:
The remote server returned an error: (401) Unauthorized.
System
at System.Net.HttpWebRequest.GetResponse()
有人知道吗?
谢谢。
我认为这可能是你的情况"The underlying connection was closed: An unexpected error occurred on a send." With SSL Certificate
看来你需要设置ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
顺便说一下,您的代码中有:
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
那么什么是凭证?该网络凭据是否类似于 AD 凭据?是否有访问该服务器的权限?
我正在尝试使用下面的代码通过 WebHttpRequest 获取一个 json 字符串(它会尝试调用一个文件,该文件将 return 我的 json 位于应用)。它在我的机器上运行,但是当我部署到用户服务器时,出现错误
"The underlying connection was closed: An unexpected error occurred on a send.".
当我尝试 运行 URL 的 powershell invoke-webrequest 时,我遇到了同样的错误,但奇怪的是,当我使用 Postman(get 或 post)时它工作正常对于 URL,用户服务器内部或外部。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
String jsonResponse = reader.ReadToEnd();
我也尝试过使用另一种方法 (WebClient) 获取 URL,但效果不佳。
String jsonResponse = null;
using (var webClient = new WebClient())
{
jsonResponse = webClient.DownloadString(url);
}
我在异常中得到的完整错误:
The remote server returned an error: (401) Unauthorized. System at System.Net.HttpWebRequest.GetResponse()
有人知道吗?
谢谢。
我认为这可能是你的情况"The underlying connection was closed: An unexpected error occurred on a send." With SSL Certificate
看来你需要设置ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
顺便说一下,您的代码中有:
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
那么什么是凭证?该网络凭据是否类似于 AD 凭据?是否有访问该服务器的权限?