2017-10-16 109 views
0

在PHP 5.6, 当我尝试使用curl_setopt_array发送发布数据时,发送数据不发送。但数据时,我使用curl_setopt发送PHP curl_setopt_array不发送post后数据

1 POST数据和卷曲PARAMS:

$url = "https://XXXXXXXXXXX/oauth/v2/accessToken"; 

$data = array(
    'grant_type' => 'authorization_code', 
    'code'=>$_REQUEST['code'], 
    'redirect_uri'=>$redirect_uri, 
    'client_id'=>$client_id, 
    'client_secret'=>$client_secret 
); 

$header = array('Content-Type: application/ x-www-form-urlencoded'); 

$options = array( 
    CURLOPT_HTTPHEADER => $header, 
    CURLOPT_POSTFIELDS => http_build_query($data), 
    CURLOPT_URL => $url, 
    CURLOPT_POST=>true, 
    CURLOPT_RETURNTRANSFER => true, 
    // CURLOPT_SSL_VERIFYPEER => false 
); 

2.here是我的 “curl_setopt_array” 代码:

$feed = curl_init(); 
curl_setopt_array($feed, $options); 
$json = curl_exec($feed); 
curl_close($feed); 

var_dump($json); 

3.我的“curl_setopt”代码

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
$response = curl_exec($curl); 
curl_close($curl); 
$response = json_decode($response,true); 

var_dump($response); 

备注: 我不擅长英语,根据我的知识撰写。

OUTPUT:

为 “CURL_SETOPT_ARRAY” 代码:

串(95) “{” 错误 “:” INVALID_REQUEST “ ”ERROR_DESCRIPTION“: ”所需的参数\“ 的client_id \” 缺失” }”

为 “CURL_SETOPT” 代码: JSON解码后: 阵列(2){[ “的access_token”] =>的字符串(179) “AQWXnJKB5enEyPcqY68ldCUyWayz2LsNXhp-9E-RBaEwGX8EyB5rIDL6YcZh6k_kPT9vJbo_xAQUCeu4hJjeqJTFmTjuFhI3rReHCF4xYBeqGdA7L5_HXSqmdk6oZXtcRSqvCunp2HYsaoLpnCUeFFeYIF5MchaRXl8P_OjXERC3J7XHDU0”[ “expires_in”] => INT( 5183999)}}

+0

在大多数情况下正确使用大写字母或标点符号不需要任何详细的英语语言知识...... –

+0

你的'var_dump'里有什么。向我们展示 –

+0

为“CURL_SETOPT_ARRAY”代码: string(95)“{”error“:”invalid_request“,”error_description“:”缺少所需参数\“client_id \”}“ – Manoj

回答

0

您可能与之交互的API需要JSON而不是URLENCODED数据,请尝试用json_encode代替http_build_query,并告诉我们是否有帮助! :)

+0

不,我哥不工作..但我发现了错误。斜杠和x-www-form-urlencoded之间有一个空格。 **((application/x-www-form-urlencoded)**)。 所以,我删除了space.then它必须是 **'(application/x-www-form-urlencoded)'**。 现在工作正常。无论如何感谢您的努力和答复。 – Manoj

+0

很高兴你能解决它 –