用cURL进行POST的PHP

时间:2012-08-10 21:47:00

标签: php api post curl

我用cURL获取内容结果的功能很少; 当我尝试没有POST时,一切正常,但启用了POST后,结果为空。

此代码不起作用:

function getAPI($url){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,'shard=Apex');     
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3");
    $result = curl_exec($ch);
    return $result; 
    curl_close($ch);
}   

此代码有效但请求不像POST一样传递:

function getAPI($url){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    //curl_setopt($ch,CURLOPT_POST, true);
    //curl_setopt($ch,CURLOPT_POSTFIELDS,'shard=Apex');   
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3");
    $result = curl_exec($ch);
    return $result; 
    curl_close($ch);
}   

我用这个命令调用这个函数:

echo getAPI('http://world.needforspeed.com/SpeedAPI/ws/cmsbridge/news/rss/fr_FR');

您也可以尝试使用此网址

http://world.needforspeed.com/SpeedAPI/ws/game/nfsw/driver/levelkro/profile

此URL仅在shard = Apex(CHHICANE Server的默认分片= CHICANE,但我的profil仅在Apex服务器上可用)时有效

2 个答案:

答案 0 :(得分:2)

根据SpeedAPI手册(简单的Google搜索),似乎给定的网址不接受“分片”POST参数......

SpeedAPI Manual for Get News RSS Feed

然而,您可以根据手册使用GET请求并使用分片参数。

例如:http://world.needforspeed.com/SpeedAPI/ws/game/nfsw/driver/DRIVER_NAME/profile?shard=APEX(确保以大写字母输入shard-parameter)

答案 1 :(得分:0)

您是否尝试过将参数作为这样的数组传递:

curl_setopt($ch,CURLOPT_POSTFIELDS,array('shard' => 'Apex'));