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

如何在httpie POST请求中发送UTF-8编码URL并解决解析错误

解决HTTPie提交URL时的JSON解析错误问题

问题背景

需要完成的任务要求:

请创建一个公开的HTTP或HTTPS服务,该服务需具备一个公开端点,能够接收以JSON编码的int32数组作为请求体,并返回一个数字作为结果。部署完成后,将该端点的URL以UTF-8编码字符串的形式提交至指定服务的根路径请求体中。操作成功后,您将获得一个成功码,需通过Upwork聊天发送给我们。

当前配置:

  • 待提交的端点URL:https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process
  • 目标提交服务地址:http://194.182.164.40/
  • 请求需携带X-auth自定义头部

使用HTTPie执行以下命令时:

http POST http://194.182.164.40/ x-auth:"....." url="https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process"

持续收到错误:

parse "{\"url\": \"https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process\"}": first path segment in URL cannot contain colon

解决方案

这个错误是因为HTTPie默认未明确请求体格式时,会误将包含:的URL值解析为路径片段,而非JSON字符串。以下两种方法可以解决:

方法1:强制指定JSON请求格式

使用HTTPie的--json(简写-j)参数,或直接设置Content-Type: application/json头部,让HTTPie正确序列化键值对为JSON:

# 简写方式
http -j POST http://194.182.164.40/ x-auth:"....." url="https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process"

# 显式指定Content-Type
http POST http://194.182.164.40/ x-auth:"....." Content-Type:application/json url="https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process"

方法2:直接传递原始JSON请求体

绕过HTTPie的自动参数解析,直接传入完整的JSON字符串:

# 通过管道传递JSON
echo '{"url": "https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process"}' | http POST http://194.182.164.40/ x-auth:"....."

# 通过Here Document传递JSON
http POST http://194.182.164.40/ x-auth:"....." @- <<EOF
{"url": "https://fast-api-test-app-f922f0fd9a50.herokuapp.com/process"}
EOF

原理说明

HTTPie在未指定Content-Type时,会根据参数内容自动推断请求格式。当值包含:这类URL路径特殊字符时,它会错误地将其识别为路径参数的一部分,而非JSON字段值。明确指定JSON格式后,HTTPie会将所有键值对正确序列化为JSON字符串,避免解析逻辑冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:54:55