代碼:
<?php
/**
* PHP發(fā)送Json對象數(shù)據(jù)
*
* @param $url 請求url
* @param $jsonStr 發(fā)送的json字符串
* @return array
*/
function http_post_json($url, $jsonStr){
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($jsonStr)
)
);
$response = curl_exec($ch);//執(zhí)行一個cURL會話,成功時返回tru,失敗返回false
$err = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);//獲取最后一次傳輸?shù)南嚓P(guān)信息,最后一個收到的HTTP代碼
curl_close($ch);
return array($httpCode, $response, $err);
}
$time = time();
$url = "https://openapi.lechange.cn/openapi/accessToken";
$str = "phone:17691200000,time:{$time},nonce:49735441495760803893403522385895,appSecret:6d5c2c723dbb4ba78fac5a0e9ece81";
$str = md5($str);
$params = array(
"system"=>array(
'ver'=>'1.0',
'sign'=>$str,
'appid'=>'lcce1fdddaa5de4322',
'time'=>"$time",
'nonce'=>'49735441495760803893403522385895'
),
"params"=>array("phone"=>"17691200000"),
"id"=>"80"
);
$jsonparams = json_encode($params);
echo $jsonparams;
list($returnCode, $returnContent, $err) = http_post_json($url, $jsonparams);
echo $returnCode;
var_dump($returnContent);
echo $err;
?>
執(zhí)行過程中,會報兩個錯。
(1)SSL certificate problem: unable to get local issuer certificate。
在php.ini
文件中加入下邊兩行代碼后,這個錯誤消失。
curl.cainfo="D:/wamp64/ca-bundle.crt"
openssl.cafile="D:/wamp64/ca-bundle.crt"
(2)以上錯誤消失后,就出現(xiàn)了
502 Bad Gateway
The proxy server received an invalid response from an upstream server.
現(xiàn)在真的是沒有辦法了。。即使參數(shù),或者是簽名錯誤,那也是對方服務(wù)器返回一個錯誤碼,但是這個502是連返回錯誤碼的機會都不給了。求大神幫忙解決。
認證0級講師
wamp服務(wù)器怎么會由502?502是反向代理錯誤。
你本地的apache+php+mysql+windows是反向代理模式運行還是apache2 handler形式?
提示比較明顯了。后端服務(wù)有問題,所以 upstream 返回有 502。
對方的后端服務(wù)在響應(yīng)你的請求時返回了一個代理不接受的結(jié)果(一般是 4XX,5XX)。
有兩種情況:
對方后端服務(wù)本來認為不應(yīng)該有 5XX 的結(jié)果(或者對方后端服務(wù)宕了),所以 upstream 不支持接受這類結(jié)果。那就是讓對方改服務(wù),不要返回 5xx 錯誤。
對方后端服務(wù)認為支持用 4xx/5xx 表示一些結(jié)果(常見于 Restful 服務(wù)),那需要對方修改 upstream 配置,支持這類結(jié)果作為正常結(jié)果返回。