如何将带有字节数组的 json 发送到 web api / postman

Posted

技术标签:

【中文标题】如何将带有字节数组的 json 发送到 web api / postman【英文标题】:How to send json with byte array to web api / postman 【发布时间】:2017-01-21 13:36:28 【问题描述】:

我希望能够同时发送给两者 1. Web API 2. Postman 到 Web Api

我可以使用 Postman 对我的 Web Api 进行简单的 GET 请求,但我不明白如何发送字节数组。

对于 Postman,我知道这是一个 PUT

这是 Web api 签名

[Route("api/Manifest/VerifyChain/")]
[ResponseType(typeof (VerifyManifestChainResponse))]
public IHttpActionResult PutVerifyManifestChain([FromBody] VerifyManifestChainRequest message)

   //.....

请求类

public class VerifyManifestChainRequest

    public byte[] CalculatedMeasurement  get; set; 
    public string DeviceId  get; set; 

我应该使用 Postman 通过原始数据发送 JSON 吗?


   "CalculatedMeasurement": ?????,
   "DeviceId": "00022B9A000000010001"

我知道网页何时调用 Web Api,我确实在 Inspector 中看到了这一点

邮递员 sn-p

如何通过 Postman 发送数据,以及如何发送到 web api http://localhost:42822/api/Manifest/VerifyChain/

【问题讨论】:

也许 "CalculatedMeasurement" : [12,12,34,...] 考虑每个项目不应大于 255 你解决过这个问题吗? 【参考方案1】:

认为你的 Webapi 方法需要 [HttpPut]

[HttpPut]
[Route("api/Manifest/VerifyChain/")]
[ResponseType(typeof (VerifyManifestChainResponse))]
public IHttpActionResult PutVerifyManifestChain([FromBody] VerifyManifestChainRequest message)

   //.....

在邮递员中,您的消息正文将是一个数组


  "CalculatedMeasurement":[71,107,98],
  "DeviceId": "afdghufsdjdf"
 

【讨论】:

没有要转换为base 64的字节。【参考方案2】:

您必须将文件转换为 base64 并将其作为字符串发送。

    您的 WebAPI 方法缺少 PUT 指示符
    [HttpPut("api/Manifest/VerifyChain/")]
    [ResponseType(typeof (VerifyManifestChainResponse))]
    public IHttpActionResult PutVerifyManifestChain([FromBody] VerifyManifestChainRequest message)
    
       //.....
    
    在 Postman 中,我必须使用 JSON 格式的正文

Request in Postman

【讨论】:

这是正确的答案:转换 base 64 中的字节并在邮递员请求中使用生成的字符串。例如,在 java 中,将字节转换为 base 64 就像 Base64.encode(myBytes) 一样简单。【参考方案3】:

如果您正在寻找如何将文件转换为用于邮递员请求的字节数组:

byte[] bytes = System.IO.File.ReadAllBytes(@"C:\temp\myFile.txt");
string bytesStr = string.Join(",", bytes);

这将产生一个长字符串,如下所示:

"49,48,58,50,52,58,50,54,..."

然后像这样在邮递员请求中使用它:


    "FileBytes":[49,48,58,50,52,58,50,54],
    "DeviceId": 12345

【讨论】:

以上是关于如何将带有字节数组的 json 发送到 web api / postman的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有图像的字节数组从 AS3 发送到 PHP?

如何在iOS(目标c)中发送带有字典和数组的JSON?

如何将字节数组中的图像发送到从android到具有Flask的python的url [重复]

使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务

MPI 发送带有字节数组和整数的结构

通过 Web 服务将文件作为字节数组发送时会产生多少额外开销?