0

我的 PHP 代码中有这个简单的连接,它将几个字符串连接在一起以发出 XML 请求。出于某种原因,当我将 customerId 与字符串链连接时,它不会被解析。但是如果我在单引号内传递一个常数,它就会被解析。这是一个例子。

我如果我用一个常数连接,像这样:

$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.'2985634';
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

回声 $out 会给我:

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber>2985634</customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

但是如果我传递一个变量而不是一个常量(这是我从一个 from by POST 方法传递的),它不会被解析,如下所示:

$custId = $_POST['customerId'];
$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.$custId;
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

回声的输出将是:

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber></customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

我尝试了不同的连接和字符串化变量的方法,但没有一个奏效:(

4

3 回答 3

1

您的代码运行没有问题,这是我的浏览器中此代码的结果:

<?php
    $_POST['id']=2985634;
    $out='<?xml version="1.0"?>';
    $out=$out.'<soapenv:Envelope ';
    $out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
    $out=$out.'xmlns:v1="http://www.test.com/v1">';
    $out=$out.'<soapenv:Header/>';
    $out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
    $out=$out.$_POST['id'];
    $out=$out.'</customerNumber></v1:loadData>';
    $out=$out.'</soapenv:Body>';
    $out=$out.'</soapenv:Envelope>';
    echo $out;
?>

在此处输入图像描述

于 2013-08-28T02:58:02.760 回答
0

回显 XML 输出后,使用查看源来检查输出结果,而不是仅在浏览器上查看。

于 2013-08-28T03:03:57.363 回答
-1

定义$custId为字符串。

$custId = '2985634';

另外,不要使用$out=$out.'string';,请尝试使用$out .= 'string';

于 2013-08-28T02:36:27.830 回答