javascript - PHP请求http post 页面,报错该如何解决?
PHP中文网
PHP中文网 2017-05-16 13:16:17
0
5
508

代码:

<?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;
?>

执行过程中,会报两个错。
(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)以上错误消失后,就出现了

502 Bad Gateway
The proxy server received an invalid response from an upstream server.

现在真的是没有办法了。。即使参数,或者是签名错误,那也是对方服务器返回一个错误码,但是这个502是连返回错误码的机会都不给了。求大神帮忙解决。

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
Peter_Zhu

wamp服务器怎么会由502?502是反向代理错误。
你本地的apache+php+mysql+windows是反向代理模式运行还是apache2 handler形式?

为情所困

明显是对方网站挂了啊……浏览器直接打开也是502

给我你的怀抱

提示比较明显了。后端服务有问题,所以 upstream 返回有 502。

对方的后端服务在响应你的请求时返回了一个代理不接受的结果(一般是 4XX,5XX)。

有两种情况:

  1. 对方后端服务本来认为不应该有 5XX 的结果(或者对方后端服务宕了),所以 upstream 不支持接受这类结果。那就是让对方改服务,不要返回 5xx 错误。

  2. 对方后端服务认为支持用 4xx/5xx 表示一些结果(常见于 Restful 服务),那需要对方修改 upstream 配置,支持这类结果作为正常结果返回。

PHPzhong

设置:CURLOPT_SSL_VERIFYPEER =>假

洪涛

请求页面,接口调试,用postman。非常好用的一个工具。模拟请求,可以方便拿到请求实例代码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板