使用Postman发送POST参数无效,但是发送GET参数有效


73

我正在尝试使用Chrome扩展程序Postman测试一个简单的PHP页面。当我发送URL参数时,脚本可以正常工作(例如,变量在$_REQUEST参数中可用)。当我将它们作为x-www-form-urlencoded参数发送时,该$_REQUEST参数仅包含PHPSESSID

剧本:

<?php
var_export($_REQUEST);
?>

当我发送URL参数时,$_REQUEST包括它们: 网址参数

但是当我将它们作为POST变量发送时,$_REQUEST不包括它们: 在此处输入图片说明

我想念什么?


2
您找到此问题的答案了吗?我有同样的问题。
斯图尔特2014年

不,我还没有。这很可能与我们的API路由有关,可能只发送了一些参数,但不是全部?我不确定。
whiterook6 2014年

感谢您的回复-不幸的是,我刚刚放弃了它::/
Stuart

有同样的问题:(
Aldekein

2
我找到了这个答案:stackoverflow.com/a/28461500/704803。我从HTTP重定向到HTTPS,这导致POST变量丢失。当我告诉Postman直接进入HTTPS网址时,它起作用了
andrewtweber 2015年

Answers:


79

我在邮递员中将网址设置为 http://但是Apache重定向到https://了POST变量,并以某种方式删除了它。

将其更改为后https://,POST变量可以正常工作。

另请参阅:https : //stackoverflow.com/a/28461500/704803


3
这也是我的问题。nginx通过302重定向到https,并且在重定向上删除了POST参数。手动将URL设置为https://起作用。
anothermh 2015年

我认为这是Postman中的错误。适用于HTTPS,而不适用于HTTP。我已经看到了由它们的功能性Generate Code生成的代码,这些代码为Python请求生成了错误的代码。querystring = {“用户名”:“ data1”,“ mydata”:“ 9232”}有效载荷=“”标头= {'cache-control':“ no-cache”,'postman-token':“ aeb70e40-c12a-f713 -1d8d-596b8cf976af“} response = requests.request(” POST“,url,data = payload,headers = headers,params = querystring)print(response.text)我认为这是越野车。
严苛的Vardhan Ladha

我遇到同样的错误,但该理论不适用。它对两个都不起作用。
Heemanshu Bhalla

谢谢。这节省了我的时间。
拉基布尔伊斯兰教

90

我在PostMan和Advance REST Client中都遇到了相同的问题。我检查了提琴手,发现我的请求有效负载未转换为JSON格式。

我正在将我的数据作为x-www-form-urlencoded传递 在此处输入图片说明

您可以通过将Content-Type用作请求标头中的application / x-www-form-urlencoded来修复它。 在此处输入图片说明


非常感谢@Arvind,将标头更改为application/x-www-form-urlencoded实际有效!恕我直言,这应该作为答案:)
拉法尔·加尔卡(RafalGałka)2015年

2
也许有人面临着同样的问题:对我来说,localhost/something在POSTMAN上使用是行不通的,但是添加/到最后,php开始从POST和从中获取值php://input。我不得不使用localhost/something/它来使其工作。
FirstOne '16

4
是! 这样可以解决此问题。实际上,PARAMS近场URL设置的是GET数据而不是POST数据。并且关键字PARAMS始终与传递数据相关GETDATA与之相关POST。我认为PostMan的偷窥应该解决此问题以使其自动更改,或自动添加DATA按钮。
严苛的Vardhan Ladha,

@FirstOne,您应该以此为答案。我也遇到了同样的问题
ismailsunni

23

只需使用Body Tab并在post parameters那里输入。请注意,Body Tab如果Get选中则禁用。


14

检查标题中的内容类型。我在发送原始JSON和我的内容类型作为POSTMAN标头中的application / json时遇到问题。

我的PHP在请求中看到了杰克。直到我将内容类型更改为application / x-www-form-urlencoded,并在RAW textarea中将JSON转换为JSON,然后我的PHP应用程序才开始查看发布数据。不是我在处理原始json时期望的,但是它现在可以满足我的需求。

邮递员POST请求


1
是的,将身体类型更改为x-www-form-urlencoded对我来说已解决了问题
Gerard

8

在发送参数时,x-www-form-urlencoded您需要将请求的标头设置为Content-Typeasapplication/x-www-form-urlencoded


2
对我来说,是选择Body选项卡,然后选择,x-www-form-urlencoded然后在该选择的下方找到键/值条目,将POST键/值数据放在其中。顺便说一句,我的邮递员版本是4.10.4
Zamrony P. Juhara

4

我遇到了同样的问题。为了解决这个问题,我添加了以下标题:

Content-Type: application/json

我必须手动添加内容类型,即使原始post字段参数中也有“ json”类型。


2

抱歉,如果这是线程死灵法则,但是今天仍然有用,尤其是使用了多少API时!

我遇到的一个问题是:我不知道您是否需要在“”列下输入:“ Content-Type ”;我以为这是一个用户密钥,它在请求返回时不是,而是不是。

因此,这样简单的事情可能会对您有所帮助,我认为Postman可以更好地说明该专栏,因为在使用Fiddler时,我什至无需阅读文档。而我和邮递员在一起。

邮递员图片


1

对我来说,服务器期望HTTPS请求,但是我没有在URL中指定。挂钩将到达服务器,但是主体将为空。



0

有时在“邮递员”中存在版本问题:

我也面临同样的问题。使用最早版本的邮递员发送数据时。
那时我已经在服务器端收到了空的json数据。
并且我已经解决了这个问题,一旦我卸载了邮递员的最旧版本并安装了最新版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.