使用CURL发送SOAP请求

时间:2014-03-20 12:50:14

标签: php curl soap

我正在使用PHP curl()发送soap请求。我需要打印我的请求,以便我可以查看我的请求,并以正确的格式了解天气。

这是我的代码:

$parameters = "<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ejb='http://ejb.gateway.ebpp.fawryis.com/'>
   <soapenv:Header/>
   <soapenv:Body>
      <ejb:process>
//... 
      </ejb:process>
   </soapenv:Body>
</soapenv:Envelope>";


$url='//URL to the service';
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl,CURLOPT_ENCODING,'utf-8');
curl_setopt($curl,CURLOPT_HTTPHEADER,array (
    'SOAPAction:""', 
    'Content-Type: text/xml; 
    charset=utf-8',
));

curl_setopt ($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, $parameters);
$result = curl_exec($curl);

我从API端收到错误的数据发送错误,这意味着我没有发送正确的格式。 谁能告诉我怎么做?

更新: 详细信息

* About to connect() to 10.2.250.4 port 9081 (#0)
*   Trying 10.2.250.4...
* connected
* Connected to 10.2.250.4 (10.2.250.4) port 9081 (#0)
> POST /CoreWeb/ApplicationBusinessFacadeService HTTP/1.1
Host: 10.2.250.4:9081
Accept: */*
Accept-Encoding: utf-8
SOAPAction:""
Content-Type: text/xml; 
    charset=utf-8
Content-Length: 1087
Expect: 100-continue

< HTTP/1.1 100 Continue
< Content-Length: 0
< Date: Thu, 20 Mar 2014 14:04:19 GMT
< Server: WebSphere Application Server/7.0
< HTTP/1.1 200 OK
< Date: Thu, 20 Mar 2014 14:04:19 GMT
< Server: WebSphere Application Server/7.0
< Content-Type: text/xml; charset=utf-8
< Content-Language: en-US
< Content-Length: 914
< 
* Connection #0 to host 10.2.250.4 left intact

1 个答案:

答案 0 :(得分:2)

你的标题分为两行:

'Content-Type: text/xml; 
charset=utf-8',

将它放在一行中。可能是它给你造成了问题。

'Content-Type: text/xml;charset=UTF-8',

<强>更新

curl_setopt($curl,CURLOPT_HTTPHEADER,array (
   'SOAPAction:""', 
   'Content-Type: text/xml;charset=utf-8',
   'Expect:'
));