第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何從 Postman To WebApi 獲取表單數(shù)據(jù)

如何從 Postman To WebApi 獲取表單數(shù)據(jù)

C#
忽然笑 2021-11-14 17:21:18
我想從 Postman 接收表單數(shù)據(jù):Content-Type: application/json這是 WebApi 方法:[HttpPost][Route("api/test")]public async Task TestMethod(HttpRequestMessage request){    var test = await request.Content.ReadAsStringAsync();}我得到的是:------WebKitFormBoundarypqDvmeG89cBR9mK9Content-Disposition: form-data; name="test"esad------WebKitFormBoundarypqDvmeG89cBR9mK9--但是我不想要數(shù)據(jù),WebKitFormBoundary并且我限制只能使用 formdata。有沒有其他辦法?HTTP調(diào)用信息:POST /api/test HTTP/1.1Host: localhost:16854Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gWCache-Control: no-cachePostman-Token: 1a3d6427-4956-707d-da0c-3a29a63c7563------WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="test"esad------WebKitFormBoundary7MA4YWxkTrZu0gW--卷曲調(diào)用信息:curl -X POST \  http://localhost:16854/api/test \  -H 'cache-control: no-cache' \  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \  -H 'postman-token: 02055873-e9a8-e9a6-019c-b407992b0e2f' \  -F test=esad 
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

1)如果您必須發(fā)送Content-Type: multipart/form-data或只是form-data

這是tab郵遞員的第一個(gè)

http://img1.sycdn.imooc.com//6190d5300001798a06900243.jpg

如果您只需要收集您發(fā)布的一個(gè)鍵/值對(duì) form-data


[HttpPost]

[Route("api/test")]

public HttpResponseMessage TestMethod(HttpRequestMessage request)

{

    var testValue = HttpContext.Current.Request.Form["test"];


    return Request.CreateResponse(HttpStatusCode.OK, testValue);

}

如果您必須收集多個(gè)已發(fā)布的鍵/值對(duì) form-data


[HttpPost]

[Route("api/test")]

public HttpResponseMessage TestMethod(HttpRequestMessage request)

{

    NameValueCollection collection = HttpContext.Current.Request.Form;


    var items = collection.AllKeys.SelectMany(collection.GetValues, (k, v) => new { key = k, value = v });


    //We just collect your multiple form data key/value pair in this dictinary

    //The following code will be replaced by yours

    Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();


    foreach (var item in items)

    {

        keyValuePairs.Add(item.key, item.value);

    }


    return Request.CreateResponse(HttpStatusCode.OK, keyValuePairs);

}

2)如果你必須發(fā)送 Content-Type: application/x-www-form-urlencoded


這是tab郵遞員的第二個(gè)

http://img1.sycdn.imooc.com//6190d53f0001370f06910232.jpg

那么你的 API 將是


[HttpPost]

[Route("api/test")]

public async Task TestMethod(HttpRequestMessage request)

{

    var test = await request.Content.ReadAsFormDataAsync();

}

然后當(dāng)您使用斷點(diǎn)調(diào)試代碼時(shí),您將獲得以下輸出

http://img1.sycdn.imooc.com//6190d54c00014b2404880139.jpg

3)如果你必須發(fā)送 Content-Type: application/json

這是tab郵遞員的第三個(gè)

有關(guān)此類選項(xiàng),請(qǐng)參見下面的屏幕截圖

http://img1.sycdn.imooc.com//6190d5580001c97806070183.jpg

你的api是


[HttpPost]

[Route("api/test")]

public async Task TestMethod(HttpRequestMessage request)

{

     var jObject = await request.Content.ReadAsAsync<JObject>();


     Item item = JsonConvert.DeserializeObject<Item>(jObject.ToString());

}

以及您收集這些發(fā)布數(shù)據(jù)的模型


public class Item

{

    public string test { get; set; }

}

你的輸出將是

http://img1.sycdn.imooc.com//6190d5670001cba005490197.jpg

此選項(xiàng)的優(yōu)點(diǎn)是您可以將其complex type作為發(fā)布的數(shù)據(jù)發(fā)送等

http://img1.sycdn.imooc.com//6190d57200016aa007360160.jpg

你的api是


[HttpPost]

[Route("test")]

public async Task TestMethod(HttpRequestMessage request)

{

    var jObject = await request.Content.ReadAsAsync<JObject>();


    Sample sample = JsonConvert.DeserializeObject<Sample>(jObject.ToString());

}

你收集這些數(shù)據(jù)的模型是


public class Item

{

    public string test { get; set; }

}


public class Sample

{

    public Item item { get; set; }

}

你會(huì)看到輸出是

http://img1.sycdn.imooc.com//6190d57f000103dc06100202.jpg

查看完整回答
反對(duì) 回復(fù) 2021-11-14
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

從 Postman 發(fā)送并form-data選擇選項(xiàng)時(shí),以下代碼將正確讀取鍵/值


[HttpPost]

[Route("api/test")]

public async Task<HttpResponseMessage> TestMethod(HttpRequestMessage request)

{

    string root = HttpContext.Current.Server.MapPath("~/App_Data");

    var provider = new MultipartFormDataStreamProvider(root);


    await Request.Content.ReadAsMultipartAsync(provider);


    var testValue = provider.FormData.GetValues("test")[0];


    return Request.CreateResponse(HttpStatusCode.OK);

}

可以在此處找到更詳盡的示例(部分:閱讀表單控件數(shù)據(jù))。


編輯:發(fā)送到上述 API 處理程序的 HTTP 調(diào)用如下:


POST /api/stats/testmethod HTTP/1.1

Host: localhost:4100

Cache-Control: no-cache

Postman-Token: 999fd13d-f804-4a63-b4df-989b660bcbc5

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW


------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="test"


esad

------WebKitFormBoundary7MA4YWxkTrZu0gW--


查看完整回答
反對(duì) 回復(fù) 2021-11-14
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

下面的語句可以做到這一點(diǎn):

NameValueCollection form = HttpContext.Current.Request.Form;


查看完整回答
反對(duì) 回復(fù) 2021-11-14
  • 3 回答
  • 0 關(guān)注
  • 283 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)