doudandui1592 2016-09-24 04:54
浏览 20
已采纳

php传递var到curl请求

I'm having a bit of an issue with curl. It simply wont take $variables.. Kindly assist. The rest of the curl request is correct and I've managed to isolate it

Here is what I've tried

CURLOPT_POSTFIELDS => "{\"msisdn\":$msisdn, \"transactionId\": $_id, \"transactionAmount\": $amount}",

$payload = json_encode(array("msisdn"=> $s_msisdn,"transactionId"=>$_id, "transactionAmount"=>$_amount));
...
 CURLOPT_POSTFIELDS => $payload,

EDIT: Full request

$curl = curl_init();
  curl_setopt_array($curl, array(
  CURLOPT_PORT => "5001",
  CURLOPT_URL => "http://123.123.23.11:5001/demo",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"msisdn\":"'.$_msisdn.'", \"transactionId\": "'.$_id.'", \"transactionAmount\": "'.$_amount.'"}",  
CURLOPT_HTTPHEADER => array(
    "authorization: Basic abcdefgh",
    "content-type: application/json",
  ),
));
  • 写回答

1条回答 默认 最新

  • dougang1965 2016-09-24 05:28
    关注

    Here is what you can use. Your JSON string is not got the correct quotations. I personally find it easier to use an array then json_encode it, it saves having to worry about escaping variables.

    $data = array (
        "msisdn" => $_msisdn,
        "transactionId" => $_id,
        "transactionAmount" => $_amount,
    );
    $jsonData = json_encode($data);
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_PORT => "5001",
        CURLOPT_URL => "http://123.123.23.11:5001/demo",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $jsonData,
    CURLOPT_HTTPHEADER => array(
        "authorization: Basic abcdefgh",
        "content-type: application/json",
    ),
    ));
    

    This is more closer to your code with the JSON fixed.

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_PORT => "5001",
        CURLOPT_URL => "http://123.123.23.11:5001/demo",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => "{\"msisdn\": \"{$_msisdn}\", \"transactionId\": \"{$_id}\", \"transactionAmount\": \"{$_amount}\"}",
    CURLOPT_HTTPHEADER => array(
        "authorization: Basic abcdefgh",
        "content-type: application/json",
    )
    ));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵