c# - 标头错误中的 HTTP 主机属性(主机属性)
问题描述
亲爱的,我现在正在尝试执行 POST HTTP,我正在使用 Postman -on postman 它工作正常,没有任何错误并且我正在获取数据,但是当我使用代码时,我正在获取和错误
远程服务器返回错误:(400) Bad Request
我比较了代码,我发现邮递员添加了一些标头,例如 User-Agent,Accept,...不需要所以但我知道主机是在运行时计算的,我试图将主机放入代码中,但没有运气任何人都可以帮助这是我的代码
var request = (HttpWebRequest)WebRequest.Create("https://XXXX.XXXX.XXXX/api/v2/EEEE/login");
login l = new login();
l.user = "XXX";
l.password = "XXXX@123";
var json = Newtonsoft.Json.JsonConvert.SerializeObject(l);
byte[] byteArray = Encoding.UTF8.GetBytes(json);
request.Accept = "application/json";
request.Method = "POST";
// request.Host = "XXXX.XXXX.com";
// request.ContentType = "application/json";
//request.Headers.Add("Host", "XXX.XXX.XXX);
request.Headers.Add("BSN-XXXX", "XXXXX");
request.Headers.Add("BSN-XXXX", "XXXXXXXX");
request.ContentLength = byteArray.Length;
//request.Referer = "XXXXXX.XXXX.COM";
using (var stream = request.GetRequestStream())
{
stream.Write(byteArray, 0, byteArray.Length);
}
//request.KeepAlive = false;
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | //SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
解决方案
我使用了这段代码,它工作正常
var client = new RestClient("https://XXXX.XXXXXX/api/v2/jumana/login/");
// client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("XXX", "XXXX");
request.AddHeader("XXXX", "XXXXX");
request.AddParameter("application/json", "{\n\"user\":\"ZZZZZZ\",\n\"password\":\"CUXXXBXZAE@XXX\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);