2017-07-24 63 views
1

我正在將cURL轉換爲Guzzle,並且大部分工作正常。 GET請求工作很好等Php,Guzzle,Schema驗證失敗,但在捲曲中工作

我的問題是POST請求,獲取架構驗證錯誤。 它捲曲的工作,所以我有點困惑......好吧,很多。

Client error: `POST https://restapi.e-conomic.com/customers` resulted in a `400 Bad Request` response: 
{"message":"Schema validation failed.","errorCode":"E00500" 

我希望你們中的一位能告訴我,如果我在轉換中做了錯誤的事情?也許我的數組需要以另一種方式進行格式化。

這是我的老工作 「捲曲代碼」:

$data = array(
'name' => 'Test User', 
'address' => 'Road 123', 
'email' => '[email protected]', 
'zip' => '9000', 
'city' => 'City', 
'country' => 'Danmark', 
'corporateIdentificationNumber' => '12345678', 
'customerGroup' => array(
    'customerGroupNumber' => 1 
), 
'currency' => 'DKK', 
'paymentTerms' => array(
    'paymentTermsNumber' => 1 
), 
'vatZone' => array(
    'vatZoneNumber' => 1 
) 
); 

$options = array(
    CURLOPT_URL => 'https://restapi.e-conomic.com/customers', 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_CUSTOMREQUEST => 'POST', 
    CURLOPT_HTTPHEADER => array(
     'X-AppSecretToken:[removed]', 
     'X-AgreementGrantToken:[removed]', 
     'Content-Type:application/json; charset=utf-8' 
    ), 
    CURLOPT_POSTFIELDS => json_encode($data) 
); 

curl_setopt_array($ch, $options); 

這是我的新 「狂飲碼」,也就是造成我的問題:

$client = new GuzzleHttp\Client(); 

$headers = [ 
    'X-AppSecretToken' => '[removed]', 
    'X-AgreementGrantToken' => '[removed]', 
    'Content-Type' => 'application/json;charset=utf-8', 
    'debug' => false 
]; 

$form_params = [ 
    'name' => 'Test User', 
    'address' => 'Road 123', 
    'email' => '[email protected]', 
    'zip' => '9000', 
    'city' => 'City', 
    'country' => 'Danmark', 
    'corporateIdentificationNumber' => '12345678', 
    'customerGroup' => [ 
     'customerGroupNumber' => 1 
    ], 
    'currency' => 'DKK', 
    'paymentTerms' => [ 
     'paymentTermsNumber' => 1 
    ], 
    'vatZone' => [ 
     'vatZoneNumber' => 1 
    ] 
]; 

$response = $client->post('https://restapi.e-conomic.com/customers', [ 
    'headers' => $headers, 
    'form_params' => $form_params 
]); 

我試着使用Guzzle文檔中所述的「body」參數,但收到此錯誤:

Passing in the "body" request option as an array to send a POST request has been deprecated. Please use the "form_params" request option to send a application/x-www-form-urlencoded request, or the "multipart" request option to send a multipart/form-data request. 

我不知道該怎麼做,真的希望,你們中的一個會告訴我我做錯了什麼。

https://restapi.e-conomic.com/schema/customers.post.schema.json#_ga=2.167601086.1488491524.1500877149-796726383.1499933074

https://restdocs.e-conomic.com/#post-customers

回答

0

我不得不發佈任務的JSON:

$response = $client->post('https://restapi.e-conomic.com/customers', [ 
    'headers' => $headers, 
    'json' => $form_params 
]);