邮递员和cURL返回不同的输出

时间:2019-01-23 13:19:12

标签: php json codeigniter curl postman

这是我在邮递员中运行的网址:-http://213.252.244.214/create-signature.php。它具有两个参数stringkey。它将返回您输入的input和输出RJAGDhoz8yDJ7GwVLberI/NMYy2zMTTeR9YzXj7QhCM=,但是如果我从curl运行它,它将返回D9UmS6r/qg0QI/0eIakifqrM3Nd1g6B3W7RCsiyO7sc=。输出为JSON格式。以下是cURL代码:-

public function create_signature($input, $key) {
        $ch = curl_init();    
        curl_setopt($ch, CURLOPT_URL,'http://213.252.244.214/create-signature.php');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "string=$input&key=$key");                   
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $output = curl_exec($ch);
        $json = json_decode($output);
        $signature = $json->output; echo $signature; echo '<br>';
        curl_close($ch);
        return $signature;
    }

示例字符串为:-2019-01-23 14:00:594lzUTYHw01dW5EmPan01M07hEiWUaEmdKl3kzpUUqak=Ha2wZwz46l7vSboxVNx3/DAUYsInjjKtAbDSnPsdDnA=igK7XzaTBrusPc3q5OEOQg==igK7XzaTBrusPc3q5OEOQg==1.0.110671523012111548248459fR9b/McBCzk=Deposit Fund698EURLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comLuisTurinTurinVenis13212TF990303274103325689667lg@gmail.comclient_deposithttp://localhost/feature/CD-716/gateways/certus_finance/paymenthttp://localhost/feature/CD-716/gateways/certus_finance/paymenthttp://localhost/feature/CD-716/gateways/certus_finance/payment

示例键为:-85e1d7a5e2d22e46

谁能告诉我为什么与众不同?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的$input$key值未进行编码。来自curl_setopt() manual page ...

  

此参数可以作为 urlencoded字符串 ...传递,也可以作为字段名称为键且字段数据为值的数组

传递。

邮递员默认执行此操作。

要省去手动编码字符串的麻烦,只需使用数组方法

curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'input' => $input,
    'key'   => $key
]);

尽管要注意这一警告...

  

注意:
  将数组传递给 CURLOPT_POSTFIELDS 会将数据编码为 multipart / form-data ,而传递URL编码的字符串会将数据编码为 application / x-www -form-urlencoded

如果需要,为确保application/x-www-form-urlencoded,您可以使用http_build_query()构建编码字符串,例如

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'input' => $input,
    'key'   => $key
]));