首页 > 解决方案 > 标头错误中的 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();

    }

标签: c#httppost

解决方案


我使用了这段代码,它工作正常

 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);

推荐阅读