2016-09-23 2 views
0

PHP에서 cURL을 사용하려고했지만 400 "잘못된 요청"오류가 있습니다 제발 도와 주시겠습니까?cURL 잘못된 요청 오류 400

많은 것을 시도하지만 작동하지 않습니다. 이 코드에서 거짓 URL을 사용하여 URL을 수정했습니다.

soapUI를 사용합니다. 정말 헤더 아니므로

<?php 

$participans_number = 1; 
$soapUrl = "http://testservices.aireur.com/aireur-ws/Booking?wsdl"; 

$participans = '<book:participants>'; 
for($i = 0; $i<$participans_number; $i++){ 
    $participans = $participans . 
    '<book:Participant> 
     <book:Civite> Mr </book:Civite> 
     <book:Nom>SARE</book:Nom> 
     <book:Prenom>Claude</book:Prenom> 
     <book:DateNaissance>12/11/1990</book:DateNaissance> 
     <book:Phone>0606060606</book:Phone> 
     <book:Adresse1>Via Lo 25</book:Adresse1> 
     <book:CodePostal>57025</book:CodePostal> 
     <book:Ville>Piombino</book:Ville> 
     <book:Pays>IT</book:Pays> 
     <book:Email>[email protected]</book:Email> 
    </book:Participant>'; 
} 
$participans = $participans . '</book:participants>'; 

$xml_post_string ='<?xml version="1.0"?><soapenv:Envelope xmln:soapenv="http://schemas.xmlsaop.org/soap/envelope/" xmlns:book="bookingservices.aireur.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <book:MakeBooking> 
      <!--Optional : --> 
      <book:agAccount>aireur9</book:agAccount> 
      <book:agProd_1_ToI>aireur9</book:agProd_1_ToI> 
      <!--Optional : --> 
      <book:agAgencyId>000000015139</book:agAgencyId> 
      <!--Optional : --> 
      <book:agProd_1_RoomType>test</book:agProd_1_RoomType> 
      <!--Optional : --> 
      <book:agProd_1_Code>test</book:agProd_1_Code> 
      <!--Optional : --> 
      <book:trFromDate>12/11/2016</book:trFromDate> 
      <!--Optional : --> 
      <book:trToDate>18/11/2016</book:trToDate>'. 
      $participans . ' 
      <book:options></book:options> 
      <book:reference>aireurIT1</book:reference> 
      <!--Optional : --> 
     </book:MakeBooking> 
    </soapenv:Body> 
</soapenv:Envelope>'; 


$headers = array(
    "POST http://testservices.aireur.com/aireur-ws/Booking HTTP/1.1", 
    "Host: http://bookingservices.aireur.com/", 
    "SOAPAction: http://bookingservices.aireur.com/MakeBooking", 
    "Content-Type: text/xml;charset=UTF-8", 
    "Content-Lenght:". strlen($xml_post_string) 
); 

//Booking request - end 

$url = $soapUrl; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$reponse = curl_exec($ch); 
curl_close($ch); 

echo $reponse; 

?> 
+0

Content-Lenght의 길이를 확인하십시오. – anwerj

답변

0
  1. 는 $ 헤더 배열

"POST http://testservices.aireur.com/aireur-ws/Booking HTTP/1.1"

...에서이 제거

감사합니다, 내 나쁜 영어 죄송합니다 요청을 심각하게 변형시킵니다.

  1. 자신을 Host:으로 설정하지 마십시오. 그것은 당신이 잘못하는 위험을 감수하고 컬은 사용하는 URL을 기반으로 정확하게 그것을 할 것입니다.

  2. 호스트와 마찬가지로 Content-Length:을 설정하지 말고 보내도록 요청한 실제 데이터를 기반으로 설정하십시오.