【发布时间】:2015-09-19 11:39:33
【问题描述】:
使用邮递员,我发送一个 POST 到(我的用户名和密码已填写):
https://ssl.reddit.com/api/login?api_type=json&user=XXX&passwd=XXX&rem=True
我收到一个包含 modhash 和 cookie 的响应。然后,我用邮递员发送第二个 POST 到:
https://en.reddit.com/api/comment?api_type=json&text=7/1/15TEST&thing_id=t1_csa56v2
带有以下标题(XXX已确认并填写):
User-Agent: XXX
Cookie: reddit_session=XXX
X-Modhash: XXX
这提供了正确的响应,但是当我尝试在我的 PHP 中使用 CURL 做同样的事情时,它会响应 USER_REQUIRED。我再次确认 cookie 和 modhash 是正确的。
$name = 't1_csa56v2';
$text = 'NEWEST TEST 7/2/15 12:20am';
$url = 'https://en.reddit.com/api/comment';
$modhash = 'XXX';
$cookie = 'XXX';
$headerFields = array (
'User-Agent' => 'XXX',
'Cookie' => 'reddit_session='.$cookie,
'X-Modhash' => $modhash
);
$postFields = array (
'api_type' => 'json',
'text' => $text,
'thing_id' => $name
);
$field_string = http_build_query($postFields);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 3);
curl_setopt($ch, CURLOPT_POSTFIELDS, $field_string);
$response = curl_exec($ch);
我做错了什么?为什么我不能得到相同的响应?
邮递员截图:
【问题讨论】:
-
您正在使用 url 发送用户名和密码查询(就像发送 GET 请求)。使用 Curl 发送 POST 请求。
-
@NeerajVerma 哦,对不起,我忘了包括您可以指定邮递员发送 POST
-
但是仅仅指定发送 POST 请求是不够的。您需要发送 POST 数据。但在这里你是在 URL 中发送数据。
-
所以我将帖子字段添加到 POST 选项后列出的 URL 参数部分,它会自动吐出我在这里粘贴的 URL,我 99% 确定那是我添加帖子参数的地方
-
如果您可以分享邮递员请求的屏幕截图会有所帮助。或者尝试使用与 CURL 请求相同的 url。由于使用邮递员和使用 CURL 的 URL 不一样。我的意思是在发出 CURL 请求时在 URL 查询中发送数据。