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.

4
  • 1
    this is possible duplicat of stackoverflow.com/questions/10650740/… at least your anwer is the second answer on this thread Commented Jun 19, 2013 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. Commented Jun 19, 2013 at 16:13
  • This should work with curl i think, give me a sec to try this Commented Jun 19, 2013 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 stackoverflow.com/questions/5224790/… Commented Jun 19, 2013 at 16:34

1 Answer 1

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!

Sign up to request clarification or add additional context in comments.

4 Comments

Thanks for your help. Unfortunately, this gives me an error on the 3rd line: Parse error: syntax error, unexpected '=', expecting ')'
Aha, the = in your post should be =>, this fixes it
Worked and I understand it now. Thanks so much! I didn't understand how to pass the options before.
Oh, sorry about that, typo. Fixed it. No problem, that's why we are all here for!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.