我正在尝试使用 POSTMAN 从移动应用程序模拟 POST 调用。我做了以下事情:
-
动词:POST
-
参数:添加了 2 个参数(都显示在 URL 中)
-
标题:添加 key-value 对 - Content-Type/application/json
-
正文:选中“form-data”单选按钮并添加 2 个 key-value 对来表示表单输入 - email/someone@gmail.com&age/18
当我提交请求并在我的服务器代码(PHP)中打印$request 对象时,我只得到参数(步骤#2)而不是表单字段。
想知道 POSTMAN 是不是传递表单数据还是我没有找到正确的位置(即在$request 对象中)。
我也尝试使用'raw'代替'form-data'并传递 JSON,但结果相同。
我尝试从 Web 应用程序调用相同的 API,我在$request 对象中获得了正确的 form-data 值.
任何帮助解决我面临的问题都非常感谢。我花了差不多一整天的时间来浏览 POSTMAN 文档并在 google 上搜索但没有太大进展。
1 回答
正确
你可能不应该这样做
如果您要发出 POST 请求,请将它们放在 body 选项卡上的“表单数据”中。 (POST 请求可能包含查询字符串数据,但这很不寻常)。
绝对不要这样做.
您正在发送表单编码数据,而不是 JSON。
如果你不覆盖它,邮递员会自动设置正确的 content-type。
可能是正确的。表单的默认编码是 x-www-form-urlencoded,但 PHP 可以处理两者。
PHP 没有本机支持使用 JSON 编码的消息体解析 HTTP 请求,因此它看到您声称您正在发送 JSON 并且什么都不做。
如果它确实支持 JSON,那么它会尝试将表单编码数据解析为 JSON 并失败。
你必须手动解码 JSON 编码的请求主体。