【发布时间】:2019-11-12 19:58:28
【问题描述】:
我可以成功地 curl 端点并获得 200 响应,但是当我使用 curl 获取转换器时,api 抱怨 body 参数。我对 api 没有任何控制权,所以我不确定那里发生了什么。
这是我成功的卷曲:
curl -v -X POST https://someurl -d 'param1=someValue' -d 'param2=somOtherValue'
使用https://kigiri.github.io/fetch/,建议在获取请求中使用以下正文:
"param1=someValue¶m2=someOtherValue"
但是使用它会给我回应:
Param1 无效
你知道 fetch body 应该是什么样子才能让它像 curl 一样工作吗?
编辑:
将 fetch 转换回 curl 有助于理解差异。 所以,这行得通:
curl -v -X POST https://someurl -d 'param1=someValue' -d 'param2=someOtherValue'
但这不是:
curl -v -X POST https://someurl -d 'param1=someValue¶m2=someOtherValue'
这个特定的 api 似乎就是这种情况,但我仍然无法更改 api,所以我想为第一个 curl 找到等效的 fetch body
【问题讨论】:
-
也许尝试将参数添加到 URL:
https://someurl? param1=someValue&param2=someOtherValue,然后 POST 到该 URL -
当您将
-d 'param1=someValue&param2=someOtherValue'提供给CURL 时,它将发送someValue&param2=someOtherValue作为param1的值。要使用 curl 发送多个参数,您需要为每个参数指定一个单独的-d选项。这就是-d 'param1=someValue' -d 'param2=someOtherValue'有效而-d 'param1=someValue&param2=someOtherValue'无效的原因。 -
@sideshowbarker:好的,那么我该如何在 javascript 抓取中做到这一点?当使用 curl 获取转换器然后再次将其转换回 curl 时,我最终得到了错误的 curl。那么 fetch 主体应该是什么样子的呢?
-
fetch("https://someurl?param1=someValue&param2=someOtherValue", {method: "POST"})就是它的样子。没有请求正文,也不需要额外的请求标头。 -
@sideshowbarker: -d 不是表示要在post body中发送吗?
标签: javascript curl fetch