【问题标题】:send with curl rest api, multipart data with multiple content-type使用 curl rest api 发送,具有多种内容类型的多部分数据
【发布时间】:2015-02-28 22:21:37
【问题描述】:

我使用了 wiztools 并设置了 3 个参数来休息 api。

  • appkey 内容类型文本
  • appsecret 内容类型文本
  • 数据内容类型应用程序/json

如何定义单独的内容类型? 您可以查看此 wiztools 请求图片以更好地理解。 http://i.stack.imgur.com/JDVKG.jpg

当我使用 curl 时,响应是 ;当前请求不是多部分请求

如何使用 curl 创建类似 wiztool 的“多部分正文”请求的请求?

一个新问题; wiztool 中的多部分模式是什么?如果我将其设置为 rfc6532 或严格,则答案为真,但如果我将其设置为“浏览器兼容”,则答案为“未定义数据”。

现在我在 curl 结果中得到“数据未定义”。如何在 curl 中将此多部分模式设置为严格或 rfc6532?

【问题讨论】:

  • 请原谅我的无益评论,但是什么 API 使用多部分文档要求 API 密钥和秘密。这真是令人难以置信的奇怪。
  • 我同意你的观点,但我不明白他们想要什么。这是我国的一个大型电子商务系统,它占用了我今天所有的时间。我读的越来越多,做了太多的测试。
  • 让我问一个不同的问题。如果您已经可以使用 wiztool 发送多部分标题,那么为什么要使用 curl 来发送呢? curl 允许你做 wiztool 不能做的事情?
  • @DarrelMiller 这是rest api,我需要始终连接它。我正在创建 php 文件,我必须使用 curl。我正在使用 wiztools 进行测试。它正在工作,但 curl 没有。我真正的问题是这个。如果我设置 multipart mode strict 或 rfc6532 像 wiztool 我认为我的 php curl 会工作。

标签: php json rest curl


【解决方案1】:

您需要将内容类型标头设置为

Content-type: multipart/form-data, boundary=AaB03x

边界值几乎可以是任何值,只要它是唯一的。

那么你需要构建一个看起来像这样的请求体......

--AaB03x
content-disposition: form-data; name="appkey"
Content-Type: text/plain; charset=UTF-8

{put key here}
--AaB03x
content-disposition: form-data; name="appsecret"
Content-Type: text/plain; charset=UTF-8

{put secret here}    
--AaB03x
content-disposition: form-data; name="data"
Content-Type: application/json; charset=UTF-8

{put json body here}

如果您无法正确获取正文格式,只需使用 Wiztool 并通过 Runscope URL 发送它,这样您就可以准确查看 Wiztool 发送到 API 的正文和标头值。

【讨论】:

  • 我想到了这个。我去年制作了 facebook 应用程序,并使用 base64 等将照片发送到相册,但它没有用。我将图片创建到本地并使用多部分@file 发送它并且它有效。但是这种方式很复杂,我无法为所有 data=json-requests 创建文本文件。
  • 我尝试发送文件,但 api 无法接受。被拒绝了。我不知道我该如何解决这个问题。
  • @maryblasso 我现在明白你的意思了。我以为你使用的是命令行 cUrl 工具,而不是 PHP 库。
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 2018-11-20
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 2014-03-08
相关资源
最近更新 更多