首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cURL错误请求错误400

cURL错误请求错误400
EN

Stack Overflow用户
提问于 2016-09-23 15:17:25
回答 2查看 1.1K关注 0票数 0

我尝试使用cURL与PHP,但我有一个错误400“错误的请求”,你能帮我吗?

我尝试了很多方法,但都不起作用。我在这段代码中用假URL修改了URL。

我使用soapUI。

谢谢,并为我糟糕的英语道歉

代码语言:javascript
复制
<?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>test@test.fr</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;

?>
EN

回答 2

Stack Overflow用户

发布于 2016-09-23 15:47:35

  1. 将其从$headers阵列

中删除

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

..。因为它不是真正的头文件,会使请求格式严重错误。

  1. 不要自己设置Host:。它只会冒着你做错了的风险,curl会根据你使用的网址自己做正确的事情。
  2. 和主机一样,不要设置Content-Length:,让curl根据你要求它发送的实际数据自行设置。
票数 1
EN

Stack Overflow用户

发布于 2018-10-10 18:55:54

对于像我一样偶然发现这一点的人来说。请记住:

代码语言:javascript
复制
$xml_post_string ='
<?xml version="1.0"?>

不起作用,它需要放在第一行:

代码语言:javascript
复制
$xml_post_string ='<?xml version="1.0"?>

我花了太长时间才弄明白。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39654864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档