2017-03-16 2 views
0

누군가 내가 이것을 도와 줄 수 있는지 궁금합니다. 몇 시간 동안이나 아무런 기쁨도 얻지 못했습니다. 이 메시지가 전송되면 "POST 매개 변수를 사용하여 XML 매개 변수 보내기"라는 오류 메시지가 나타납니다. 나는이 일을하고 있다고 생각했지만 분명히 그렇지는 않았다. 모든 포인터가 많이 감사합니다.Post 메서드를 사용하여 XML 매개 변수를 보내십시오.

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml')); 

또는 text/xml 일 수도 있고, 어떤 서버가 수락 : 물론 사용자 이름, 암호 및 URL은

define('XML_PAYLOAD', '<?xml version=\"1.0\" encoding=\"UTF-8\"?><Request><Head><Username>myusername</Username><Password>mypassword</Password><RequestType>HotelSearch</RequestType></Head><Body><HotelIds><HotelId>2234836</HotelId></HotelIds><CheckInDate>2017-05-01</CheckInDate><CheckOutDate>2017-05-08</CheckOutDate><Rooms><Room><NumAdults>2</NumAdults></Room></Rooms><Nationality>GB</Nationality><Currency>GBP</Currency><AvailableOnly>0</AvailableOnly></Body></Request>'); 
define('XML_POST_URL', 'http://theurl'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, XML_POST_URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
curl_setopt($ch, CURLOPT_POSTFIELDS, XML_PAYLOAD); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close')); 
$start = array_sum(explode(' ', microtime())); 
$result = curl_exec($ch); 
$stop = array_sum(explode(' ', microtime())); 
$totalTime = $stop - $start; 
if (curl_errno($ch)) { 
    $result = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch); 
} else { 
    $returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    switch($returnCode){ 
     case 404: 
      $result = 'ERROR -> 404 Not Found'; 
      break; 
     default: 
      break; 
    } 
} 
curl_close($ch); 
echo 'Total time for request: ' . $totalTime . "\n"; 
echo $result; 
exit(0); 

답변

0

귀하의 요청 헤더 콘텐츠 형식을 추가 라이브 버전 다릅니다.

+0

답장을 보내 주셔서 감사합니다. 나는 또한 'text/xml'을 제안하고 'application/x-www-form-urlencoded'로 시도했지만 여전히 동일한 오류가 발생하고 있습니다. – Dean

+0

'curl_setopt ($ ch, CURLOPT_VERBOSE, 1); . 컬의 디버그 프린트를 생성하고이를 사용하여 더 자세히 추적 할 수 있습니다. –

+0

감사합니다. Sabuj. 나는 그것을 줄 것이다. – Dean

관련 문제