PHP发送AMF请求cURL

PHP发送AMF请求cURL,php,curl,amf,Php,Curl,Amf,因为这是我在这个网站上的第一篇帖子,如果我犯了一些错误,请原谅(比如错误的标题,忘记了什么,等等) 我正在开发PHP脚本(bot),我正在使用cURL来完成这项工作。 所以我编写了很多代码,我总是能够自己找到解决问题的方法。我只是想告诉你,在我写这篇文章之前,我在很多地方都搜索过 所以我的问题是,我必须使用PHP发送AMF请求。我收集了很多信息,测试了很多代码,但即使每次得到不同的结果,也没有一个有效。 我所知道的是发送请求、发送位置、引用人、发送方法(在本例中为POST/GET、POST),但

因为这是我在这个网站上的第一篇帖子,如果我犯了一些错误,请原谅(比如错误的标题,忘记了什么,等等)

我正在开发PHP脚本(bot),我正在使用cURL来完成这项工作。
所以我编写了很多代码,我总是能够自己找到解决问题的方法。我只是想告诉你,在我写这篇文章之前,我在很多地方都搜索过

所以我的问题是,我必须使用PHP发送AMF请求。我收集了很多信息,测试了很多代码,但即使每次得到不同的结果,也没有一个有效。
我所知道的是发送请求、发送位置、引用人、发送方法(在本例中为POST/GET、POST),但我有点做错了。
我将粘贴我测试过的数百个代码中的一个,这样您就可以更仔细地看到问题

$url包含amf网关的url
$postfields包含amf请求,我不确定是否需要将其放在这里,但我已经尝试将其添加到headers数组中。
$referer包含referer(显然)

这不是全部代码,但是您需要的值已经在这里了

function go_page($url, $postfields = array(), $referer = '')
{
    global $ch;

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($ch, CURLOPT_REFERER, $referer);

    return curl_exec($ch);
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-amf'));
$postfields = array('\x00\x03\x00\x00\x00\x01\x00\x16\x57\x68\x65\x65\x6c\x53\x65\x72\x76\x69\x63\x65\x2e\x73\x70\x69\x6e\x57\x68\x65\x65\x6c\x00\x02\x2f\x31\x00\x00\x00\x09\x0a\x00\x00\x00\x01\x02\x00\x01\x32');
echo go_page($url, $postfields, $referer);
这是输出:
HTTP/1.1 100 Continue HTTP/1.1 200确定日期:Sat,2015年9月12日18:22:31 GMT服务器:Apache/2.2.15(CentOS)X-Powered-By:PHP/5.4.28 X-Cobalt:加载的内容长度:0连接:关闭内容类型:text/html;字符集=UTF-8

提前感谢你的帮助


编辑:我已经尝试将请求放入头数组。

也许$postfields必须是字符串?不,$postfields是数组,我已经使用过很多次了。问题不在这里(我写了大约1k行,我使用$postfields很多次,它工作了,给了我预期的结果,没有警告,没有通知)我的意思是尝试发送类似字符串的post数据(我的蹩脚英语):)如果value(CURLOPT_postfields)是一个数组,则内容类型头将设置为multipart/form data。从p.s.我还没有测试过指定的headerAh,你的意思是将标题作为字符串发送,我以前看过这篇文章(我真的搜索了很多),但这告诉我400个错误的请求(类似于,忘记了),也许$postfields必须是字符串?不,$postfields是一个数组,我已经使用过很多次了。问题不在这里(我写了大约1k行,我使用$postfields很多次,它工作了,给了我预期的结果,没有警告,没有通知)我的意思是尝试发送类似字符串的post数据(我的蹩脚英语):)如果value(CURLOPT_postfields)是一个数组,则内容类型头将设置为multipart/form data。从p.s.我还没有测试过指定的headerAh,你的意思是将标题作为字符串发送,我以前看过这篇文章(我真的搜索了很多),但这告诉我400个错误的请求(类似的,忘记了)