Heim > Fragen und Antworten > Hauptteil
Code:
<?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;
?>
Während des Ausführungsprozesses werden zwei Fehler gemeldet.
(1)SSL certificate problem: unable to get local issuer certificate。
在php.ini
Nachdem der Datei die folgenden zwei Codezeilen hinzugefügt wurden, verschwindet dieser Fehler.
curl.cainfo="D:/wamp64/ca-bundle.crt"
openssl.cafile="D:/wamp64/ca-bundle.crt"
(2) Nachdem der obige Fehler verschwunden war, erschien er
502 Bad Gateway
The proxy server received an invalid response from an upstream server.
Es gibt jetzt wirklich keinen anderen Weg. . Selbst wenn die Parameter oder die Signatur falsch sind, gibt der andere Server einen Fehlercode zurück, dieser 502 bietet jedoch nicht einmal die Möglichkeit, den Fehlercode zurückzugeben. Bitten Sie Gott um Hilfe bei der Lösung.
天蓬老师2017-05-16 13:18:17
wamp服务器怎么会由502?502是反向代理错误。
你本地的apache+php+mysql+windows是反向代理模式运行还是apache2 handler形式?
给我你的怀抱2017-05-16 13:18:17
提示比较明显了。后端服务有问题,所以 upstream 返回有 502。
对方的后端服务在响应你的请求时返回了一个代理不接受的结果(一般是 4XX,5XX)。
有两种情况:
对方后端服务本来认为不应该有 5XX 的结果(或者对方后端服务宕了),所以 upstream 不支持接受这类结果。那就是让对方改服务,不要返回 5xx 错误。
对方后端服务认为支持用 4xx/5xx 表示一些结果(常见于 Restful 服务),那需要对方修改 upstream 配置,支持这类结果作为正常结果返回。