2017-05-22 15 views
0

'$ array' cycliungから 'foreach'を介してJSONオブジェクトをプルし、cURLを使用して現在のデータオブジェクトをポストすることを期待しています。エラー500 with cURL JSON PHP

現在、エラー500が表示され、その理由が完全にわかりません。

<?php 
$string = file_get_contents("/home/scott/sandbox/apitest/export.json"); 
$array = json_decode($string, true); 

foreach ($array as $group) { 
    $Name = $group['Name']; 
    $Position = $group['Position']; 
    $Company = $group['Company']; 
    $Description = $group['Description']; 
    $Country = $group['Country']; 
    $Zip = $group['Zip']; 
    $City = $group['City']; 
    $State = $group['State']; 
    $Address = $group['Address']; 
    $Email = $group['Email']; 
    $Website = $group['Website']; 
    $Phonenumber = $group['Phonenumber']; 
    $CompanyNumber = $group['CompanyNumber']; 
    $CompanyName = $group['CompanyName']; 
    $RegAddressAddressLine1 = $group['RegAddressAddressLine1']; 
    $RegAddressAddressLine2 = $group['RegAddressAddressLine2']; 
    $RegAddressPostTown = $group['RegAddressPostTown']; 
    $RegAddressCounty = $group['RegAddressCounty']; 
    $RegAddressCountry = $group['RegAddressCountry']; 
    $RegAddressPostCode = $group['RegAddressPostCode']; 
    $CompanyCategory = $group['CompanyCategory']; 
    $CompanyStatus = $group['CompanyStatus']; 
    $CountryOfOrigin = $group['CountryOfOrigin']; 
    $DissolutionDate = $group['DissolutionDate']; 
    $IncorporationDate = $group['IncorporationDate']; 
    $URI = $group['URI']; 

$myobj = array(
    "data" => array(
     "Name" => $Name, 
     "Position" => $Position, 
     "Company" => $Company, 
     "Description" => $Description, 
     "Country" => $Country, 
     "Zip" => $Zip, 
     "City" => $City, 
     "State" => $State, 
     "Address" => $Address, 
     "Email" => $Email, 
     "Website" => $Website, 
     "Phonenumber" => $Phonenumber, 
     "CompanyNumber" => $CompanyNumber, 
     "CompanyName" => $CompanyName, 
     "RegAddressAdressLine1" => $RegAddressAdressLine1, 
     "RegAddressAdressLine2" => $RegAddressAdressLine2, 
     "RegAddressPostTown" => $RegAddressPostTown, 
     "RegAddressCounty" => $RegAddressCounty, 
     "RegAddressCountry" => $RegAddressCountry, 
     "RegAddressPostCode" => $RegAddressPostCode, 
     "CompanyCategory" => $CompanyCategory, 
     "CompanyStatus" => $CompanyStatus, 
     "CountryOfOrigin" => $CountryOfOrigin, 
     "DissolutionDate" => $DissolutionDate, 
     "IncorporationDate" => $IncorporationDate, 
     "URI" => $URI 
) 
); 


curl_setopt_array($curl, array(
    CURLOPT_URL => "http://xx.xx.xx.xx:3001/derp/submission", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => $myobj, 
    CURLOPT_HTTPHEADER => array(
    "content-type: application/json" 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

// if ($err) { 
// echo "cURL Error #:" . $err; 
// } else { 
// echo $response; 
// } 

} 
?> 
+0

A 500はサーバー側のエラーです - おそらく入力を検証する問題です。私はまず、サーバーに送信された生の要求を調べて、要求が意図された形式であることを確認し、サーバー側のログを調べて何が失敗しているかを確認します。 –

+0

私は何かが紛失しているかどうかは分かりませんが、cURLヘッダーはapplication/jsonに設定しますが、 '$ myobj'はPHP配列です。あなたのリクエストデータは 'multipart/form-data'か' application/json'でしょうか? –

答えて

2

交換してみてください。

CURLOPT_POSTFIELDS => $myobj, 

で:

CURLOPT_POSTFIELDS => json_encode($myobj), 

あなたはとても、Content-Typeヘッダは、アプリケーション/ JSONであることで、サーバにPHPの配列を送信しようとしていますそれをjsonにエンコードする必要があります。