1

我很困惑如何编辑这个脚本能够接受来自 jquery 的请求并将脚本返回的值返回给我?非常感谢任何帮助?

我可以使用它从文件系统传递一个 xml 文件和 url 并获得我期望的返回,但我真的希望能够将它用作 wsdl 服务的代理。

[编辑]由于环境变化,我想使用下面的脚本将来自我正在传递 xml 的 wsdl 服务的 xml 返回传回给我。当我从命令行执行此操作时,它工作正常 - 我只是不确定如何能够让脚本接受一个帖子,然后从服务调用返回 xml。

我在命令行中使用如下脚本:

php file.php theurl <test.xml

^^ 返回给我的 xml 我想然后传回前端

<?php
ini_set('display_errors', "1");

$url= $argv[1];

echo "url\n$url\n";

preg_match("/https?:\/\/([^\/]*)(.*)/", $url, $matches);
$host=$matches[1];
$request=$matches[2];

$mxml=fread(STDIN,65536);
$yt =curl_init();
$header =   "POST $request  HTTP/1.0\r\n";
$header .=  "Host: $host\r\n";
$header .=  "SoapAction:";
$header .=  "Content-Type: text/xml\r\n";
$header .=  "Content-Length: ".strlen($mxml)."\r\n";
$header .=  "Content-Transfer-Encoding: text\r\n";
$header .=  "Connection-Close: close\r\n\r\n";

echo "header\n$header\n";

$header .=  $mxml;

curl_setopt($yt, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($yt, CURLOPT_URL, $url);
curl_setopt($yt, CURLOPT_CUSTOMREQUEST, $header);
curl_setopt($yt, CURLOPT_RETURNTRANSFER, true);

$rxml=curl_exec($yt);
echo "sent\n$mxml\n";
echo "received\n$rxml\n";

echo curl_error($yt);
?>
4

2 回答 2

1

怀疑它。抱歉忘记发布答案。希望能帮助别人:

<?php
$url = 'http://myURL';
$xmlpost = file_get_contents('php://input');

$header =   "POST $url  HTTP/1.0\r\n";
$header .=  "Host: myHOST\r\n";
$header .=  "SoapAction: ''";

$ch = curl_init();

//Set the URL
curl_setopt($ch, CURLOPT_URL, $url);
//Enable POST data
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlpost);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);

//curl_exec automatically writes the data returned
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
于 2012-10-27T17:37:34.463 回答
0
$.post('path/to/php/', function(data)
{
    $('body').append('<div id="outputs"></div>');
    $('#outputs').html($(data).find('name_of_xml_node').text());
}, 'xml');

也许..不能保证这一点,至少可能没有一些示例数据..这将是更多的示例,而不是实际基于您获得的 xml 数据..

此外,您希望您的 PHP 仅输出 XML,没有额外的字符串或其他类似的东西,这可能会破坏 XML 的格式

于 2012-08-06T18:50:28.973 回答