0

I need to do a http post/curl query from php and store the result in a jsor variable.

In my documentation, it says there are two ways:

  • An HTTP POST request with Content-Type "multipart/form-data" where all parameters are in the post body and the track is in the "track" section of the post "files"
  • An HTTP POST request with Content-Type "application/octet-stream", with the local file as the body of the request, and the parameters in the URL

Example POSTs:

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

But how do I implement this in php? I have no clue. From what I have been reading, I don;t think the curl_init method would work, like they describe on the php website, since it is a not a post method:

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

I would welcome any indication as how to proceed. Thanks.

dorien
  • 5,265
  • 10
  • 57
  • 116
  • 1
    this is possible duplicat of http://stackoverflow.com/questions/10650740/how-to-use-libcurl-for-http-post at least your anwer is the second answer on this thread – brendosthoughts Jun 19 '13 at 16:09
  • They code resembles as it is the standard php curl method, but I still don't know how I would convert the Example post into the standard php example that I give. – dorien Jun 19 '13 at 16:13
  • This should work with curl i think, give me a sec to try this – bottleboot Jun 19 '13 at 16:21
  • 2
    bottleboot looks like he has a good answer +1 ... here is another thread with some good info i was working off of http://stackoverflow.com/questions/5224790/curl-post-format-for-curlopt-postfields – brendosthoughts Jun 19 '13 at 16:34

1 Answers1

4

How about this way?

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

There are other options, depending on the situation you might need them, SSL, Cookies, User Agents, etc... Here's a link to the php reference!

bottleboot
  • 1,659
  • 2
  • 25
  • 41