You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用httpie在Linux调用.NET Core REST API遇400错误求解决

解决Httpie调用.NET Core REST API返回400 Bad Request的问题

首先看一下你的问题核心:PowerShell里用Invoke-WebRequest发送GET请求能成功,但移植到Httpie时因为请求方式和参数传递的错误导致了400响应。下面是修正后的脚本和问题分析:

正确的Httpie Bash脚本

#!/bin/bash
url="http://172.16.63.241:6083/bbopman/messaging/apireferences"

http GET $url \
  Namespace=="MyApplication.MessagingApi" \
  Version=="current" \
  DataDefinitionLanguage=="Csharp" \
  MakePartial==false \
  MakeVirtual==false \
  --output ~/AccountingApiMessageDefinitions.cs

为什么原脚本会失败?

  1. 错误使用了-d参数
    http -d是用来发送POST请求的表单数据,但你的PowerShell脚本是用GET请求,把参数作为URL查询字符串传递的。-d会强制发送POST请求,这和服务器期望的请求方式不匹配,直接导致400错误。

  2. 参数格式错误
    你把多个参数放在一个引号里的写法request="Namespace=='...' Version=='...'"是错误的,Httpie需要每个查询参数单独用key==value的形式声明,它会自动把这些参数拼接成URL的查询字符串。

  3. 遗漏了必填参数
    原PowerShell脚本里有MakePartial和MakeVirtual两个参数,但你的Bash脚本里漏掉了它们,服务器可能因为缺少必要参数返回400。

额外优化:处理二进制响应

因为服务器返回的是octet-stream二进制流,使用--output参数(或简写-o)比直接重定向更稳妥,Httpie会正确处理二进制内容,避免编码问题。如果你想让Httpie显示下载进度,还可以加上--download参数:

http --download GET $url \
  Namespace=="MyApplication.MessagingApi" \
  Version=="current" \
  DataDefinitionLanguage=="Csharp" \
  MakePartial==false \
  MakeVirtual==false \
  -o ~/AccountingApiMessageDefinitions.cs

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:23:17