我需要将此命令行cURL转换为php cURL并回显结果
curl -H "Content-Type: application/json" -d '{ "code":"<code>", "client_id": "<client_id>", "client_secret": "<client_secret>"}' https://www.example.com/oauth/access_token
怎么办呢?
答案 0 :(得分:1)
尝试这种简单的方法:
$data = array("code"=>"123", "client_id"=> "123", "client_secret"=> "123");
$data_string = json_encode($data);
$ch = curl_init('https://www.example.com/oauth/access_token');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
将123替换为您的值。以下是curl_setopt()
的手册答案 1 :(得分:0)
这样的事情应该有效,假设您需要将数据发布到URL:
<?php
// URL that the data will be POSTed to
$curl_url = 'https://www.example.com/oauth/access_token';
// Convert the data into an array
$curl_data_arr = array('{ "code":"<code>", "client_id": "<client_id>", "client_secret": "<client_secret>"}');
// Prepare to post as an array
$curl_post_fields = array();
foreach ($curl_data_arr as $key => $value) {
// Assuming you need the values url encoded, this is an easy way
$curl_post_fields[] = $key . '=' . urlencode($value);
}
$curl_header = array('Content-Type: application/json');
$curl_array = array(
CURLOPT_URL => $curl_url,
CURLOPT_HTTPHEADER => $curl_header,
CURLOPT_POSTFIELDS => implode('&', $curl_post_fields),
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
);
// Initialize cURL
$curl = curl_init();
// Tell cURL to use the array of options we just set up
curl_setopt_array($curl, $curl_array);
// Assign the result to $data
$data = curl_exec($curl);
// Empty variable (at first) to avoid errors being displayed
$result = '';
// Check for errors
if ($error = curl_error($curl)) {
// If there's an error, assign its value to $result
$result = $error;
}
curl_close($curl);
// If there's no errors...
if (empty($error)) {
// ... instead assign the value of $data to $result
$result = $data;
}
echo $result;