我正在嘗試在 MVC 和 .NET Core API 之間發送一些基本的 POST 資料。當我發布資料時,我收到此錯誤:
遠程服務器回傳錯誤:(400) Bad Request
我的控制器:
[HttpPost]
[Route ("simple")]
public int PostSimple([FromBody] string value)
{
return 0;
}
我對此控制器的 POST 代碼:
string url = "my.api/Controller/Simple";
var client = new WebClient();
client.Headers.Add("Content-Type:application/json");
string data = "some data I want to post";
byte[] postArray = Encoding.ASCII.GetBytes(data);
var response = client.UploadData(encoded, "POST", postArray);
僅當我使用[FromBody]洗掉它時才會發生這種情況
,我可以訪問 web 方法,但我看不到 POSTed 資料。
任何想法,將不勝感激。
uj5u.com熱心網友回復:
你明確告訴你的 api 控制器除了 json 格式(標題:)Content-Type:application/json。然后,您必須提供一個遵循規則的主體。
原始字串不是 json,這就是為什么您會收到這 400 個錯誤請求的原因。
為了解決這個問題,您首先需要創建一個類來映射請求 json
public class MyRequest
{
public string Value { get; set; }
}
然后在你的控制器中使用它
[HttpPost]
[Route ("simple")]
public int PostSimple([FromBody] MyRequest request)
{
// access the value using request.Value
}
最后,向您的控制器發送一個 json 正文
string data = "{\"value\" : \"some data I want to post\"}";
byte[] postArray = Encoding.ASCII.GetBytes(data);
var response = client.UploadData(encoded, "POST", postArray);
uj5u.com熱心網友回復:
您的變數“資料”應該包含一個 JSON 字串。
var response = client.UploadData( url , "POST", postArray);
uj5u.com熱心網友回復:
您收到此錯誤是因為您實際上發送了無效資料。服務器期望(來自正文)是這樣的:
{
"value" : "some data I want to post"
}
你發送的只是一個字串,沒有別的;這將導致無效請求。在您的 POST 代碼中,將您的方法更改為如下所示(偽編碼):
var stringedClass = new MyClass() { value = "This is the string" };
var message = new HttpRequestMessage(HttpMethod.Post, "url");
message.Content = new StringContent(JsonConvert.SerializeObject(stringedClass), Encoding.UTF8, "application/json");
using (var response = await _client.SendAsync(msg).ConfigureAwait(false))
{
if (!response.IsSuccessStatusCode)
{
throw new Exception(response.ToString());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/483860.html
上一篇:如何驗證從Request.From[""]收到的資料
下一篇:從模型中獲取值到串列物件中
