为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取php响应中的xml

如何获取php响应中的xml

PHP
茅侃侃 2023-07-15 16:50:34
我正在尝试使用以下代码从服务器获取响应:<?php$url = "http://pgtest.redserfinsa.com:2027/WebPubTransactor/TransactorWS?WSDL";$post_string = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:web="http://webservices.serfinsa.sysdots.com/">   <soapenv:Header/>   <soapenv:Body>      <web:cardtransaction>         <!--Optional:-->         <security>{"comid":"comid","key":"$!@!@!@!@!@","comwrkstation":"comwrkstation"}</security>         <!--Optional:-->         <txn>MAN</txn>         <!--Optional:-->         <message>{"CLIENT":"9999994570392223"}            </message>      </web:cardtransaction>   </soapenv:Body></soapenv:Envelope>';$post_data = array('xml' => $post_string);$stream_options = array(    'http' => array(        'method'  => 'POST',        'header'  => 'Content-type: text/xml' . "\r\n",        'content' =>  http_build_query($post_data)));$context  = stream_context_create($stream_options);$response = file_get_contents($url, null, $context);?>但是,我仍然收到空回复,有人知道吗?
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我不知道为什么你的代码返回空,但你可以尝试使用curl


代码:


$url = "http://pgtest.redserfinsa.com:2027/WebPubTransactor/TransactorWS?WSDL";


$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:web="http://webservices.serfinsa.sysdots.com/">

   <soapenv:Header/>

   <soapenv:Body>

      <web:cardtransaction>

         <security>{"comid":"comid","key":"$!@!@!@!@!@","comwrkstation":"comwrkstation"}</security>

         <txn>MAN</txn>

         <message>{"CLIENT":"9999994570392223"}

         </message>

      </web:cardtransaction>

   </soapenv:Body>

</soapenv:Envelope>';


$headers = array(

  "Content-type: text/xml",

  "Content-length: " . strlen($xml),

  "Connection: close",

);


$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_TIMEOUT, 30);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);


$response = curl_exec($curl);

$error = curl_error($curl);



print_r($response);

print_r($error);

结果:


接收失败:连接被对等方重置


查看完整回答
反对 回复 2023-07-15
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信