【问题标题】:Send XML from URL on PHP submit在 PHP 提交时从 URL 发送 XML
【发布时间】:2012-08-28 00:30:52
【问题描述】:

让我们想象一下以下情况:

您有一个简单的 php 页面,其中包含允许用户输入以下数据的 html 表单:

  • 电话号码
  • 短信

如:

<form action="xml-file.xml" method="get">
   <input type="text" id="to" name="to" value="" />
   <input type="text" id="text" name="text" value="" />
   <input type="submit" />
</form>

现在,您使用 this 方法创建一个 XML,我已经测试过并且可以正常工作,然后您想使用 this other 方法 (CURL) 通过 URL 发送它。

不幸的是,我无法使用 CURL 方法,因为我无法链接提交操作来创建 XML 并将其发送到 URL,因此它会转到本地服务器 (www.example.xxx:1234)然后处理该 XML 以发送 SMS。

如果 XML 的格式正确,该服务器会发送响应。因此,我的问题在于提交创建的 XML。

帮助?

更新 1:添加更新的代码。这允许我(在 sms.xml 文件上使用 chmod 777)随意编辑 xml 文件。

index.php

<html>
...
<form action="send.php" method="get">
   <input type="text" id="to" name="to" value="" />
   <input type="text" id="text" name="text" value="" />
   <input type="submit">
</form>
...
</html>

send.php

<?php
  $xml = simplexml_load_file("sms.xml");          // Load XML file
  $xml->Title3 = $_GET['to'];                         // Updating <Title3> from GET method
  $xml->Title5[0]->Title51Content = $_GET['text'];      // Updating <Title51> from GET method
  $xml->asXML('sms.xml');                         // Saving the XML file
?>

sms.xml

<?xml version="1.0" encoding="UTF-8"?>
<Title1>
   <Title2>Some Text</Title2>
   <Title3>Variable 1</Title3>
   <Title4>Some Text</Title4>
   <Title5>
      <Title51>Variable 2</Title51>
   </Title5>
</Title1>

附注:发送时,XML 应该有 "Content-Type","application/x-www-form-urlencoded" 标头,用于返回如下内容:

XML=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3...

谢谢!

【问题讨论】:

    标签: php xml curl xml-parsing


    【解决方案1】:

    将 XML 作为字符串返回并发布?

    ...
    $xml_post_string = 'XML='.urlencode($xml->asXML());  
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://theurl.com');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $response = curl_exec($ch);
    curl_close($ch);
    ...
    

    【讨论】:

    • 感谢您的回答。 $xml_post_string 会从之前保存的asXML('sms.xml') 返回保存的值吗?另外,CURLOPT_URL 是否直接在 url 上接受端口号?而且,urlencode 会将生成的 XML 编码到 "Content-Type","application/x-www-form-urlencoded" 上吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2015-02-20
    • 2017-03-27
    • 2023-03-08
    相关资源
    最近更新 更多