【问题标题】:how to provides xml request as variable in php如何在 php 中提供 xml 请求作为变量
【发布时间】:2016-07-23 09:19:39
【问题描述】:

我想将 xml 请求作为 php 中的变量传递

我的 xml 请求看起来像

$XPost ="<ENVELOPE>
    <HEADER>
        <VERSION>1</VERSION>
        <REQVERSION>1</REQVERSION>
        <TALLYREQUEST>EXPORT</TALLYREQUEST>
        <TYPE>COLLECTION</TYPE>
        <SESSIONID>" .$session. "</SESSIONID>
        <TOKEN>" .$token. "</TOKEN>
        <ID>GetProfitnLossColl</ID>
    </HEADER>
    <BODY>
    <DESC>
    <STATICVARIABLES>
        <SVCURRENTCOMPANY>" .$company. "</SVCURRENTCOMPANY>
        <SVEXPORTFORMAT> $$SysName:XML </SVEXPORTFORMAT>
    </STATICVARIABLES>
    <TDL>
    <TDLMESSAGE>
        <COLLECTION NAME= \" GetProfitnLossColl \" ISMODIFY= \" No \" ISFIXED= \" No \" ISINITIALIZE= \" No \" ISOPTION= \" No \" ISINTERNAL= \" No \">
            <TYPE>Group</TYPE>                        
            <CHILDOF>&#4; Primary</CHILDOF>
            <NATIVEMETHOD>parent, MasterID</NATIVEMETHOD>
            <NATIVEMETHOD>BSDrClosing</NATIVEMETHOD>
            <NATIVEMETHOD>BSCrClosing</NATIVEMETHOD>
            <Method>VSPLName   : $$Name</Method>
            <Method>isGroup    : $$IsGroup</Method>
            <Method>cmpName    : ##SVCurrentCompany</Method>
            <Filters>CLDrBalNotZero</Filters>
        </COLLECTION>
        <SYSTEM TYPE= \" Formulae \" NAME= \" CLDrBalNotZero \" ISMODIFY= \" No \" ISFIXED= \" No \" ISINTERNAL= \" No \">$BSDrClosing != 0 Or $BSCrClosing != 0 </SYSTEM>
    </TDLMESSAGE>
    </TDL>
    </DESC>
    </BODY>
    </ENVELOPE>";

我在 php 中使用这个请求来连接 Tally 服务器

<?php
$response = array("error" => FALSE);
if(isset($_REQUEST['session1']) && isset($_REQUEST['token']) && isset($_REQUEST['company']) ){ //&& !empty($_POST['session1']) && !empty($_POST['token']) && !empty($_POST['company']) ){

$url        = "https://dev1.tallyenterprise.com";
//$url      = "https://tallynet.tallyenterprise.com";
$session    = $_REQUEST['session1'];
$token      = $_REQUEST['token'];
$company    = $_REQUEST['company']; ///_POST['company'];

$XPost = "above xml request"                

$headers    = array();
$headers[]  = 'ID:GETPROFITNLOSSCOLL';  //GetProfitnLossColl
$headers[]  = 'SOURCE:VISIONSERVER';
$headers[]  = 'TARGET: TALLY';
$headers[]  = 'CONTENT-TYPE:text/xml;charset=utf-8';
$headers[]  = 'Accept-Encoding:identity';

$headers[]  = 'TARGETACCOUNTINTERNALID:201214173';
//$headers[]    = 'TARGETCOMPANYNAME:Vision Solutions App';
$headers[]  = 'TARGETCOMPANYNAME:'.$company;


//  http://www.hackingwithphp.com/15/10/2/your-first-curl-scripts
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt($ch, CURLOPT_TIMEOUT, 40); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, $XPost); 
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

$data = curl_exec($ch);
curl_close($ch);

echo $data;
}
else{
$response["error"] = TRUE;
$response["error_msg"] = "Required parameters (session or token) is missing!";
echo json_encode($response);
}
?> 

它在浏览器中给我警告 注意:未定义变量:第 36 行 C:\wamp64\www\VisionServer\TallyPhp\Req\getProfitnLoss.php 中的 SysName

和名称、IsGroup、BSCrClosing

并作为无效请求响应

请帮帮我.....

【问题讨论】:

    标签: php json xml xml-parsing


    【解决方案1】:

    PHP 将 $SysName:XML 解析为变量。如果要发送文字字符串 '$$SysName:XML',您需要像这样转义 XML 字符串中的每个美元符号:

    <SVEXPORTFORMAT> \$\$SysName:XML </SVEXPORTFORMAT>
    

    【讨论】:

    • 谢谢@Bert 我进行了更改,现在它不是推错错误,但如果我在浏览器中通过在 url 中传递参数来测试它,然后在我的应用程序中发送 POST 请求,它会显示“无效请求”它显示“缺少必需的参数(会话或令牌)!”。任何解决方案...??
    猜你喜欢
    • 2018-08-11
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多