Post 在 C# 中使用 WebClient 的数据和服务器重放 Bad Gateway
Post data using WebClient in C# and server replay Bad Gateway
我需要编写用于在 myServer 上登录的 c# 代码。
我尝试使用此代码,但 myServer 总是以相同的响应回复我
(502) 网关错误
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
string result = "";
string json = "{\"UserName\": \"myUser\", \"Password\": \"myPassword\"}";
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Encoding = Encoding.UTF8;
result = client.UploadString("https://<myServer>/Login", "POST", json;
}
当我尝试使用 Google Chrome App Postman 或 Arc 连接到服务器时,登录成功。
我的代码哪里出错了?
为了解决这个问题,我使用了 HttpWebResponse class 而不是 WebClient。
这是最后的代码
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://myserver");
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
UserName = "<myUserName>",
Password = "<myPassword>"
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
Console.WriteLine(streamReader.ReadToEnd());
}
我需要编写用于在 myServer 上登录的 c# 代码。 我尝试使用此代码,但 myServer 总是以相同的响应回复我 (502) 网关错误
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
string result = "";
string json = "{\"UserName\": \"myUser\", \"Password\": \"myPassword\"}";
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.Encoding = Encoding.UTF8;
result = client.UploadString("https://<myServer>/Login", "POST", json;
}
当我尝试使用 Google Chrome App Postman 或 Arc 连接到服务器时,登录成功。
我的代码哪里出错了?
为了解决这个问题,我使用了 HttpWebResponse class 而不是 WebClient。
这是最后的代码
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://myserver");
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
UserName = "<myUserName>",
Password = "<myPassword>"
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
Console.WriteLine(streamReader.ReadToEnd());
}