簡體   English   中英

使用httpclient C#消費json網絡服務時收到“錯誤請求”

[英]getting 'Bad Request' while consuming json webservice using httpclient C#

我的狀態代碼越來越糟:400,原因短語:“錯誤請求”,顯示以下代碼。

string url = "http://1.1.1.1";
Object cu = new Object ();
HttpClient client = new HttpClient { BaseAddress = new Uri(url) };
var json = JsonConvert.SerializeObject(cu);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(JsonConvert.SerializeObject(cu), Encoding.UTF8, "application/json");
var response = client.PostAsJsonAsync("/api", content); //changed content from cu
var status = response.Result;

我注意到我的狀態碼的Content-Type:仍然是text / html而不是application / json。

請協助。

注意:以上注釋中提到的已編輯代碼。 我也可以通過下面的jQuery消耗服務。 但是我需要C#代碼才能工作。

    $.ajax({
         cache: false,
         type: "POST",
         async: true,
         url: RequestUrl,
         data: JSON.stringify(jData),
         contentType: "application/json",
         dataType: "json",
         success: function (result) {
             alert(result.ResultCode);
         },
         error: function (result) {
             alert('error' + result.responseText);
         }
     });

我剛剛嘗試了您的代碼,它實際上設置了正確的標頭:

Accept: application/json
Content-Type: application/json; charset=utf-8

因此,您的JSON可能有問題。 您應該閱讀端點的文檔。 在這種情況下使用Fiddler (出色的HTTP客戶端)也非常有幫助。

您確定您符合API的期望嗎? 您要發送的JSON有效負載為:

{"Headers":[{"Key":"Content-Type","Value":["application/json; charset=utf-8"]}]}

作為有效載荷發送似乎有點奇怪。

我猜測您根本不符合API。 它可能希望您不發送任何內容,或者不發送任何格式非常特殊的JSON對象,而不發送所需的內容。 結果,由於請求不正確(即格式不正確),它以“錯誤請求”響應。 查看您正在調用的API的文檔,並確保您傳遞了期望的API。

您確定服務需要響應POST而不是GET嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM