2017-05-22 1 views
0

'$ array'에서 'foreach'를 통해 JSON 객체를 가져오고 cURL을 사용하여 현재 데이터 객체를 게시 할 것으로 예상합니다.cURL JSON이 포함 된 오류 500 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

500은 서버 측 오류입니다. 아마도 입력을 확인하는 데 문제가있는 것 같습니다. 먼저 요청 된 형식을 확인하기 위해 서버로 보낸 원시 요청을 검사 한 다음 서버 측 로그를 검사하여 무엇이 실패했는지 확인합니다. –

+0

내가 뭔가를 놓치고 있는지 확실하지 않지만 cURL 헤더를 application/json으로 설정했지만'$ myobj'는 PHP 배열입니다. 요청 데이터가'multipart/form-data' 또는'application/json'으로되어 있습니까? –

답변

2

봅니다 대체 :

CURLOPT_POSTFIELDS => $myobj, 

로 :

CURLOPT_POSTFIELDS => json_encode($myobj), 

콘텐츠-Type 헤더는 응용 프로그램/JSON 인으로, 서버에 PHP 배열을 보내려고, 그래서 당신은 그것을 json으로 인코딩해야합니다.