javascript - Bagaimana untuk menyelesaikan ralat apabila PHP meminta halaman pos http?
PHP中文网
PHP中文网 2017-05-16 13:16:17
0
5
511

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.iniSelepas 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.

PHP中文网
PHP中文网

认证0级讲师

membalas semua(5)
Peter_Zhu

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:

  1. 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.

  2. 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.

PHPzhong

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan