You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Postman能否在发请求前调用C# DLL/自定义程序处理二进制请求体?

嘿,针对你的两个Postman相关问题,我整理了几个可行的解决方案,应该能帮到你:

问题1:Postman能否在发送请求前调用C# DLL或自定义程序?

Postman本身不直接支持调用C# DLL,但咱们可以通过间接方式实现类似需求:

  • 本地服务中转:写个简单的C#控制台程序或者ASP.NET Core Web API,把调用DLL的逻辑封装进去。然后在Postman的Pre-request Script里用pm.sendRequest()调用这个本地服务,拿到处理后的结果,再把结果塞进请求里就行。
  • 搭配Newman命令行工具:如果是批量跑测试,可以用Newman结合Node.js脚本,在脚本里通过child_process模块执行你的C#程序(比如dotnet run或者直接运行编译好的exe),拿到输出后再传给Newman作为请求参数。
  • 逻辑转写为JavaScript:如果你的C#逻辑不算复杂,直接把它翻译成Postman支持的JavaScript,写在Pre-request Script里,这样就不用额外依赖C#程序了。
问题2:如何在Postman中生成符合要求的二进制请求体?

结合你提到的C#客户端逻辑(把info序列化为字节数组再发送),这里有几个实用方案:

方案一:本地服务中转(最推荐)

  1. 写一个简单的C# Web API接口,接收你的info数据(比如用JSON格式传进去),内部调用你的SerializeToByteArray方法,直接返回二进制数据。
  2. 在Postman的Pre-request Script里,发请求到这个本地接口,传入你的info参数,拿到返回的二进制内容。
  3. 把拿到的二进制数据设置为请求的body:
    // 假设本地服务返回的就是二进制数据
    pm.request.body.mode = 'binary';
    pm.request.body.binary = pm.response.content;
    

方案二:Newman + C#控制台程序

  1. 写一个C#控制台程序,接收info输入(比如从命令行参数或JSON文件读取),执行序列化逻辑后把字节数组输出到标准输出,或者保存成临时文件。
  2. 用Node.js脚本调用这个C#程序,拿到输出的二进制数据,再传给Newman,让它把这个数据作为请求的二进制body发送。

方案三:JavaScript重写序列化逻辑

如果你的SerializeToByteArray是基于常见的序列化规则(比如旧的BinaryFormatter,不过这个现在不推荐用了),可以尝试在JavaScript里实现相同的序列化逻辑,直接在Pre-request Script里生成字节数组,然后切换请求Body模式为binary,把生成的字节数组塞进去。不过这种方式需要你吃透C#序列化的细节,可能会花点时间。

另外提醒下:在Postman里设置二进制请求体时,记得手动把请求的Body模式切换为binary,这样才能正确发送二进制内容。

内容的提问来源于stack exchange,提问作者daxu

火山引擎 最新活动