Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用多层阵列发送PUT请求_Php_Arrays_Json_Curl - Fatal编程技术网

Php 如何使用多层阵列发送PUT请求

Php 如何使用多层阵列发送PUT请求,php,arrays,json,curl,Php,Arrays,Json,Curl,我需要向API发送一个Json“PUT”请求。我对Json编码非常陌生,所以对您来说可能是一个简单的方法 Json如下所示: OrderDto { Version (integer, optional), IsDeactivated (boolean, optional, read only), FiscalSetupId (integer, optional, read only), CreatedAt (string, optional, read only), CreatedBy (int

我需要向API发送一个Json“PUT”请求。我对Json编码非常陌生,所以对您来说可能是一个简单的方法

Json如下所示:

OrderDto {
Version (integer, optional),
IsDeactivated (boolean, optional, read only),
FiscalSetupId (integer, optional, read only),
CreatedAt (string, optional, read only),
CreatedBy (integer, optional, read only),
PartnerId (integer, optional),
OurReference (string, optional),
YourReference (string, optional),
ContextType (string, optional),
Address (AddressDto, optional),
DeliveryAddress (AddressDto, optional),
DeliveryNote (string, optional),
OrderNumber (integer, optional),
DateDays (integer, optional),
DeliveryDateDays (integer, optional),
CurrencyAbbreviation (string, optional),
OfferReportLayoutId (integer, optional),
DeliveryReportLayoutId (integer, optional),
InvoiceReportLayoutId (integer, optional),
ConfirmationReportLayoutId (integer, optional),
OfferReportLayoutName (string, optional),
DeliveryReportLayoutName (string, optional),
InvoiceReportLayoutName (string, optional),
ConfirmationReportLayoutName (string, optional),
InternalNote (string, optional),
TermsOfPayment (TermsOfPaymentDto, optional),
Culture (string, optional),
ProjectId (integer, optional),
ResponsibleId (integer, optional),
ResponsibleName (string, optional),
InvoiceEmail (string, optional),
PartnerAccountNumber (string, optional),
PartnerName (string, optional),
PartnerNote (string, optional),
PartnerPhoneNumber (string, optional),
PartnerType (string, optional),
Summary (OrderSummaryDto, optional),
OrderInvoiceNumbers (Array[integer], optional),
DepartmentId (integer, optional),
DepartmentDescription (string, optional),
BearerId (integer, optional),
BearerDescription (string, optional),
PurposeId (integer, optional),
PurposeDescription (string, optional),
IsHeaderReadOnly (boolean, optional),
OrderStatusId (integer, optional),
OrderStatusName (string, optional),
OrderStatusColor (string, optional),
ProjectDescription (string, optional),
ProjectNumber (integer, optional),
OrderDeliveryStatus (string, optional),
CultureDisplayName (string, optional, read only),
Id (integer, optional)
}
根据API,我的请求需要“OrderDto”

这是我的Curl/php:

$url="api-site-url"; //I am aware that the url is missing :)
$post_data=array('OrderDto'=>array('OurReference' => 'Faktureret'));
$createJSONData=json_encode($post_data, JSON_FORCE_OBJECT);
$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
                'APIKEY:  xxxx-xxxx-xxxx-xxxx'
          ));
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $createJSONData);
        $data = curl_exec($ch);
        if (curl_errno($ch)) {
        print "Error: " . curl_error($ch);  
        } else {
        // Show me the result

        curl_close($ch);


        $obj=json_decode($data, true);
        print_r($obj);

        }

我收到一个由JSON错误引起的错误。您的建议是什么?

OrderDto不是生成JSON格式的合适php构造。所提供的结构看起来像是程序员对每个值所需内容的说明。我知道,我只是想了解如何将信息“放入”数组中。当我尝试在requestb.in上运行脚本时,我得到以下Json:{“OrderDto”:{“OurReference”:“Faktureret”},这应该是正确的,对吗?