Php $body->;附加();从POSTMAN API,如何用变量替换它?

Php $body->;附加();从POSTMAN API,如何用变量替换它?,php,json,api,curl,postman,Php,Json,Api,Curl,Postman,给定由postman生成的代码,$body->append();从POSTMAN API,如何用变量替换它 如何用php变量替换CURLOPT_POSTFIELDS?所以它可以用动态变量填充 做这件事的最佳实践是什么 多谢各位 <?php $json = '{ "RateRequest": { "ClientDetails" : null, "RequestedShipment": {

给定由postman生成的代码,$body->append();从POSTMAN API,如何用变量替换它

如何用php变量替换CURLOPT_POSTFIELDS?所以它可以用动态变量填充

做这件事的最佳实践是什么

多谢各位

<?php

$json = '{
    "RateRequest": {
        "ClientDetails" : null,
        "RequestedShipment": {
            "DropOffType": "REQUEST_COURIER",
            "ShipTimestamp": "2020-08-25T11:00:00GMT+02:00",
            "UnitOfMeasurement": "SI",
            "Content": "NON_DOCUMENTS",
            "PaymentInfo": "DAP",
            "NextBusinessDay": "Y",
            "Account": "54xxxxxx",
            "Ship": {
                "Shipper": {
                    "City": "city",
                    "PostalCode": 123456,
                    "CountryCode": "ID"
                },
                "Recipient" : {
                "City" : "canberra",
                "PostalCode" : 2601,
                "CountryCode" : "AU"
                }
            },
            "Packages": {
                "RequestedPackages": {
                    "@number": "1",
                    "Weight": {
                        "Value": 8.82
                    },
                    "Dimensions": {
                        "Length": 4.33,
                        "Width": 4.33,
                        "Height": 4.33
                    }
                }
            }
        }
    }
}';

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://wsbexpress.dhl.com/rest/sndpt/RateRequest",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $json,
  CURLOPT_HTTPHEADER => array(
    "Authorization: Basic YmF0dWxheWFuZ3NJRDpKXjBlUEA2dkQhM2Y=",
    "Content-Type: application/json",
    "Cookie: BIGipServer~WSB~pl_wsb-express-cbj.dhl.com_443=293349575.64288.0000"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
  • json_将字符串解码为数组
  • 根据需要修改值
  • 为CURLOPT_POSTFIELDS设置该数据
像这样的

$json = '{
    "RateRequest": {
        "ClientDetails" : null,
        "RequestedShipment": {
            "DropOffType": "REQUEST_COURIER",
            "ShipTimestamp": "2020-08-25T11:00:00GMT+02:00",
            "UnitOfMeasurement": "SI",
            "Content": "NON_DOCUMENTS",
            "PaymentInfo": "DAP",
            "NextBusinessDay": "Y",
            "Account": "54xxxxxx",
            "Ship": {
                "Shipper": {
                    "City": "city",
                    "PostalCode": 123456,
                    "CountryCode": "ID"
                },
                "Recipient" : {
                "City" : "canberra",
                "PostalCode" : 2601,
                "CountryCode" : "AU"
                }
            },
            "Packages": {
                "RequestedPackages": {
                    "@number": "1",
                    "Weight": {
                        "Value": 8.82
                    },
                    "Dimensions": {
                        "Length": 4.33,
                        "Width": 4.33,
                        "Height": 4.33
                    }
                }
            }
        }
    }
}';

$data = json_decode($json, true);

if (isset($data['RateRequest']['RequestedShipment']['DropOffType'])) {

   $data['RateRequest']['RequestedShipment']['DropOffType'] = 'some new value';

}


//... later in your curl call...

 CURLOPT_POSTFIELDS => $data,

哦,天哪,为什么我没想到。。非常感谢韦斯利·史密斯谢谢韦斯利