cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menyelesaikan ralat apabila PHP meminta halaman pos http?

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中文网2755 hari yang lalu523

membalas semua(5)saya akan balas

  • 天蓬老师

    天蓬老师2017-05-16 13:18:17

    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?

    balas
    0
  • 为情所困

    为情所困2017-05-16 13:18:17

    Jelas sekali laman web pihak lain sedang tidak berfungsi... Apabila saya membukanya terus dalam penyemak imbas, ia juga mendapat 502

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:18:17

    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.

    balas
    0
  • PHPz

    PHPz2017-05-16 13:18:17

    Set : CURLOPT_SSL_VERIFYPEER => palsu

    balas
    0
  • PHP中文网

    PHP中文网2017-05-16 13:18:17

    Halaman permintaan, debugging antara muka, gunakan posmen. Alat yang sangat berguna. Dengan mensimulasikan permintaan, anda boleh mendapatkan kod contoh permintaan dengan mudah

    balas
    0
  • Batalbalas