postman请求 400 bad request

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postman请求 400 bad request相关的知识,希望对你有一定的参考价值。

参考技术A 使用postman请求时,出现
<h1>HTTP Status 400 – Bad Request</h1>
<hr class="line" />
<p><b>Type</b> Status Report</p>
<p><b>Description</b> The server cannot or will not process the request due to something that is perceived to be a
client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
</p>

发现postman隐藏的头里的

Host 和 User-Agent 没设置会出现这个问题

HTTPClient 返回 400 Bad Request 但 Postman 在 C# 中返回 201

【中文标题】HTTPClient 返回 400 Bad Request 但 Postman 在 C# 中返回 201【英文标题】:HTTPClient returns 400 Bad Request but Postman returns 201 in C# 【发布时间】:2020-10-24 07:32:58 【问题描述】:

我有以下代码用于发布请求

    [TestMethod]
    public async Task<Tuple<int, string>> PostRequestAdditionalAttributeValid0000()
    
        string locationPath = solutionDirectory.ToString();
        var jsonText = File.ReadAllText(locationPath + @"\TestJsons\testdata.json");

        using (var client = new HttpClient())
        
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            
            //Add client header
            client.DefaultRequestHeaders.Add("client_uuid", "2fd77dd8-ed76-4bba-b0e1-5cda454c8d6e");

            var result = await client.PostAsync(urlPost, content);

            int StatusNumber = (int)result.StatusCode;
            string resultContent = await result.Content.ReadAsStringAsync();

            return new Tuple<int, string>(StatusNumber, resultContent);
        
    

在 Postman 中它返回 201 但 HTTPClient 返回 400 响应(错误请求)。我不知道为什么。

我的json如下

       
    "audit_date": "2020-05-13T11:27:10.3187798Z",
    "client_uuid": "2fd77dd8-ed76-4bba-b0e1-5cda454c8d6e",
    "audit_entry": 
        "where_uri": "test.com/apps/171f0841-825b-4964-8f8c-0869650f14a6",
        "why_uri": "test.com/reference/reasons_for_change/61acc173-7168-4ae5-9f04-afa228941f8b",
        "who_uri": "test.com/users/4977dae1-a307-425f-980c-53413fef1b0f",
        "when_audited": "2018-11-13T20:20:39+00:00",
        "what_uri": "test.com/tests/1bc67a71-8549-4ab8-9dd9-e44238198860",
        "what_changed": [
            
                "attribute_name": "birth_year",
                "attribute_value": "1969",
                "attribute_change": null
            ,
            
                "attribute_name": "subject_reference",
                "attribute_value": "TEST-WOO3444",
                "attribute_change": null
            
        ]
        

非常感谢任何帮助。我已经搜索并阅读了其他类似的问题,甚至尝试了其他 *** 帖子的解决方案,但似乎都不起作用。

这是我在 400 Bad request 旁边遇到的错误

对象引用未设置为对象的实例。

单步执行这行代码后

var result = await client.PostAsync(urlPost, content);

【问题讨论】:

使用 Telerik Fiddler 捕获 RAW http 请求并比较它们以查看差异。您也可以在此处粘贴这两个请求,以便我们为您提供帮助! 不,这只是 HTTP 请求的正文。 Fiddler 是一个本地代理,您可以使用它来查看您的网络浏览器、fiddler、... 发出的实际 HTTP 请求。这样您就可以比较两个请求之间的不同之处,并分析导致它失败的原因。根据问题中提供的当前信息,可能没有人能够帮助您。 检查嗅探器中的第一个请求并比较 c# 和 Postman 中的标头。 c# 中的默认标头与 Postman 不同。使 c# 标头看起来像 Postman。 除了状态码之外,服务器是否给出任何错误信息?例如,您可以从邮递员导出工作请求的 cURL 表示并将其添加到问题中吗?可能您缺少一些标题。您是否可以控制要发布到的服务器?您可以尝试在那里调试... 顺便说一句:你不应该为每个请求创建一个新的HttpClient,而是重用以前创建的实例aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong 【参考方案1】:

感谢所有的想法,原来我的 json 对于邮递员和我的代码略有不同,所以 400 bad request 实际上是我传入的 json 的正确结果。(我错过了一个必填字段)

抱歉给您添麻烦了。

【讨论】:

以上是关于postman请求 400 bad request的主要内容,如果未能解决你的问题,请参考以下文章

Abp Zero AJAX请求(文件上传)出现400 bad request 错误问题解决

Postman(06)Postman调接口报错400 Bad Request

如何修复 .Net Core POST 操作中的 400 Bad Request 错误?

RestTemplate GET 请求抛出 400 Bad Request

400 Bad Request 使用邮递员复制的请求代码

400 Bad Request - 请求标头或 cookie 太大