使用curl而不使用命令行,但使用php进行post方法

时间:2013-06-19 16:06:52

标签: php curl

我需要从php进行http post / curl查询并将结果存储在jsor变量中。

在我的文档中,它说有两种方法:

  • 带有Content-Type“multipart / form-data”的HTTP POST请求,其中所有参数都在帖子正文中,而曲目位于帖子“files”的“track”部分
  • 带有Content-Type“application / octet-stream”的HTTP POST请求,本地文件作为请求的主体,以及URL中的参数

示例POST:

curl -X POST“http://developer.echonest.com/api/v4/track/upload” - d“api_key = xxxxxx& url = http://example.com/audio.mp3

但是如何在php中实现呢?我没有线索。从我一直在阅读的内容来看,我认为curl_init方法不会像在php网站上描述的那样工作,因为它不是一个post方法:

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);

我欢迎任何迹象表明如何进行。感谢。

1 个答案:

答案 0 :(得分:4)

这样怎么样?

$post = array(
     "url"=>"path/to/file/example_homepage.txt",
     "api_key"=>"xxxxxx"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, "http://developer.echonest.com/api/v4/track/upload");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$response = curl_exec($ch);

还有其他选择,具体取决于您可能需要的情况,SSL,Cookie,用户代理等...... Here's a link to the php reference!