Kod:
<?php
/**
* PHP发送Json对象数据
*
* @param $url 请求url
* @param $jsonStr 发送的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);//执行一个cURL会话,成功时返回tru,失败返回false
$err = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);//获取最后一次传输的相关信息,最后一个收到的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;
?>
Semasa proses pelaksanaan, dua ralat akan dilaporkan.
(1)SSL certificate problem: unable to get local issuer certificate。
在php.ini
Selepas menambah dua baris kod berikut pada fail, ralat ini hilang.
curl.cainfo="D:/wamp64/ca-bundle.crt"
openssl.cafile="D:/wamp64/ca-bundle.crt"
(2) Selepas ralat di atas hilang, ia muncul
502 Bad Gateway
The proxy server received an invalid response from an upstream server.
Sebenarnya tiada cara lain sekarang. . Walaupun parameter atau tandatangan salah, pelayan lain akan mengembalikan kod ralat, tetapi 502 ini tidak memberi peluang untuk mengembalikan kod ralat. Minta pertolongan Allah untuk menyelesaikannya.
Mengapa pelayan wamp mendapat 502 adalah ralat proksi terbalik.
Adakah tetingkap apache+php+mysql+ tempatan anda berjalan dalam mod proksi terbalik atau dalam mod pengendali apache2?
Jelas sekali laman web pihak lain sedang tidak berfungsi... Apabila saya membukanya terus dalam penyemak imbas, ia juga mendapat 502
Gesaan lebih jelas. Terdapat masalah dengan perkhidmatan bahagian belakang, jadi huluan mengembalikan 502.
Perkhidmatan bahagian belakang pihak lain mengembalikan hasil yang tidak diterima oleh proksi semasa membalas permintaan anda (biasanya 4XX, 5XX).
Ada dua situasi:
Perkhidmatan hujung belakang pihak satu lagi pada asalnya percaya bahawa tidak sepatutnya ada keputusan 5XX (atau perkhidmatan hujung belakang pihak satu lagi sedang ke bawah), jadi huluan tidak menyokong penerimaan keputusan sedemikian. Iaitu untuk meminta pihak lain menukar perkhidmatan dan tidak mengembalikan ralat 5xx.
Jika perkhidmatan bahagian belakang pihak satu lagi percaya bahawa ia menyokong penggunaan 4xx/5xx untuk mewakili beberapa hasil (biasa dalam perkhidmatan Restful), maka pihak yang satu lagi perlu mengubah suai konfigurasi huluan untuk menyokong hasil sedemikian supaya dikembalikan sebagai hasil biasa.
Set : CURLOPT_SSL_VERIFYPEER => palsu
Halaman permintaan, debugging antara muka, gunakan posmen. Alat yang sangat berguna. Dengan mensimulasikan permintaan, anda boleh mendapatkan kod contoh permintaan dengan mudah