在wsdl结构内动态发布值

问题描述 投票:0回答:1

我有php脚本使用curl php发布和更新wsdl键的值:

 $imei = $_POST['86207503'];   
    $data = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:sub=\"http://subscriberexample.com/\">\r\n
      <soap:Header/>\r\n   <soap:Body>\r\n
      <sub:wsUpdateSubscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberProfile>\r\n
      <!--Zero or more repetitions:-->\r\n
      <entry>\r\n
      <!--Optional:-->\r\n
      <key>IMEI</key>\r\n
      <!--Optional:-->\r\n
      <value>{$imei}</value>\r\n
      </entry>\r\n
      </subscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberID>123546546</subscriberID>\r\n
      <!--Optional:-->\r\n
      <alternateId>?</alternateId>\r\n
      <!--Optional:-->\r\n
      <updateAction>?</updateAction>\r\n
      <!--Optional:-->\r\n
      <parameter1>?</parameter1>\r\n
      <!--Optional:-->\r\n
      <parameter2>?</parameter2>\r\n
      </sub:wsUpdateSubscriberProfile>\r\n
      </soap:Body>\r\n</soap:Envelope>";

    $curl = curl_init();
.....

如果在上面的脚本上手动输入数据,它会成功运行。我试图从$imei = $_POST['86207503'];中的表单中使用动态值作为IMEI值

但它不起作用,价值永远不会过去。谁知道怎么解决这个问题?

谢谢。

php curl wsdl
1个回答
1
投票

无法重现,imei肯定是在这个测试代码中注入的:

<?php
$imei = 'SOMETHING_EASY_TO_SPOT';   
    $data = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:sub=\"http://subscriberexample.com/\">\r\n
      <soap:Header/>\r\n   <soap:Body>\r\n
      <sub:wsUpdateSubscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberProfile>\r\n
      <!--Zero or more repetitions:-->\r\n
      <entry>\r\n
      <!--Optional:-->\r\n
      <key>IMEI</key>\r\n
      <!--Optional:-->\r\n
      <value>{$imei}</value>\r\n
      </entry>\r\n
      </subscriberProfile>\r\n
      <!--Optional:-->\r\n
      <subscriberID>123546546</subscriberID>\r\n
      <!--Optional:-->\r\n
      <alternateId>?</alternateId>\r\n
      <!--Optional:-->\r\n
      <updateAction>?</updateAction>\r\n
      <!--Optional:-->\r\n
      <parameter1>?</parameter1>\r\n
      <!--Optional:-->\r\n
      <parameter2>?</parameter2>\r\n
      </sub:wsUpdateSubscriberProfile>\r\n
      </soap:Body>\r\n</soap:Envelope>";
var_dump($data);

输出是:

string(863) "<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sub="http://subscriberexample.com/">

      <soap:Header/>
   <soap:Body>

      <sub:wsUpdateSubscriberProfile>

      <!--Optional:-->

      <subscriberProfile>

      <!--Zero or more repetitions:-->

      <entry>

      <!--Optional:-->

      <key>IMEI</key>

      <!--Optional:-->

      <value>SOMETHING_EASY_TO_SPOT</value>

      </entry>

      </subscriberProfile>

      <!--Optional:-->

      <subscriberID>123546546</subscriberID>

      <!--Optional:-->

      <alternateId>?</alternateId>

      <!--Optional:-->

      <updateAction>?</updateAction>

      <!--Optional:-->

      <parameter1>?</parameter1>

      <!--Optional:-->

      <parameter2>?</parameter2>

      </sub:wsUpdateSubscriberProfile>

      </soap:Body>
</soap:Envelope>"

如果你看一下输出中的第22行,肯定会注入$imei变量。因此,我投票决定将这个问题关闭为“无法复制”。

顺便问一下,如果你运行var_dump($_POST);你会得到什么?是否有一个关键86207503的POST变量?如果没有,这可能意味着你的开发环境的error_reporting值很差,意味着它不包括E_NOTICE,它绝对应该

© www.soinside.com 2019 - 2024. All rights reserved.