0

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

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

  • 一个内容类型为“multipart/form-data”的 HTTP POST 请求,其中所有参数都在帖子正文中,并且轨道位于帖子“文件”的“轨道”部分
  • 一个 Content-Type 为“application/octet-stream”的 HTTP POST 请求,以本地文件作为请求的主体,参数在 URL 中

帖子示例:

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);

我欢迎任何有关如何进行的指示。谢谢。

4

1 回答 1

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、用户代理等... 这是 php 参考的链接!

于 2013-06-19T16:32:40.290 回答