javascript - Comment résoudre une erreur lorsque PHP demande une page de publication http?
PHP中文网
PHP中文网 2017-05-16 13:16:17
0
5
545

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

Pendant le processus d'exécution, deux erreurs seront signalées.
(1)SSL certificate problem: unable to get local issuer certificate。php.iniAprès avoir ajouté les deux lignes de code suivantes au fichier, cette erreur disparaît.

curl.cainfo="D:/wamp64/ca-bundle.crt"
openssl.cafile="D:/wamp64/ca-bundle.crt"

(2) Après la disparition de l'erreur ci-dessus, elle est apparue

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

Il n’y a vraiment plus d’autre moyen maintenant. . Même si les paramètres ou la signature sont erronés, l'autre serveur renverra un code d'erreur, mais ce 502 ne donne même pas la possibilité de renvoyer le code d'erreur. Demandez à Dieu de vous aider à le résoudre.

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(5)
Peter_Zhu

Pourquoi le serveur Wamp obtient-il 502 ? 502 est une erreur de proxy inverse.
Votre apache+php+mysql+windows local fonctionne-t-il en mode proxy inverse ou en mode gestionnaire apache2 ?

为情所困

De toute évidence, le site Web de l'autre partie est en panne... Lorsque je l'ouvre directement dans le navigateur, il obtient également 502

给我你的怀抱

L'invite est plus évidente. Il y a un problème avec le service backend, donc l'amont renvoie un 502.

Le service backend de l'autre partie a renvoyé un résultat que le proxy n'a pas accepté en répondant à votre demande (généralement 4XX, 5XX).

Il existe deux situations :

  1. Le service backend de l'autre partie pensait à l'origine qu'il ne devrait pas y avoir de résultats 5XX (ou le service backend de l'autre partie est en panne), donc en amont ne prend pas en charge l'acceptation de tels résultats. Il s'agit de demander à l'autre partie de modifier le service et de ne pas renvoyer d'erreur 5xx.

  2. Si le service backend de l'autre partie estime qu'il prend en charge l'utilisation de 4xx/5xx pour représenter certains résultats (courant dans les services Restful), alors l'autre partie doit modifier la configuration en amont pour prendre en charge que ces résultats soient renvoyés comme des résultats normaux.

PHPzhong

Définir : CURLOPT_SSL_VERIFYPEER => faux

洪涛

Page de demande, débogage de l'interface, utilisez postman. Un outil très utile. En simulant une requête, vous pouvez facilement obtenir le code de l'instance de requête

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal