【发布时间】:2013-09-27 21:27:48
【问题描述】:
我正在使用 cURL 将 HTML 表单的内容提交给第 3 方服务,它向我返回一个 XML 响应。但无论我在做什么,我似乎都无法解析那个 XML 响应来自定义结果的显示。
这是处理表格的代码(注意一些身份证号码已被删减):
<?php
$FirstName = $_POST['FirstName'] ;
$LastName = $_POST['LastName'] ;
$Zip = $_POST['Zip'] ;
$EmailAddress = $_POST['EmailAddress'] ;
$PrimaryPhoneNumber = $_POST['PrimaryPhoneNumber'] ;
$DateofBirth = $_POST['DateofBirth'] ;
$myvars = '&VID=' . '****' . '&LID=' . '****' . '&AID=' . '****' . '&FirstName=' . $FirstName . '&LastName=' . $LastName .
'&EmailAddress=' . $EmailAddress . '&PrimaryPhoneNumber=' . $PrimaryPhoneNumber . '&Zip=' . $Zip . '&DateofBirth=' . $DateofBirth;
if ($FirstName!='' && $LastName!='' && $Zip!='' && $EmailAddress!='' && $PrimaryPhoneNumber!='' && $DateofBirth!='') {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://secure.leadexec.net/leadimport.asmx/LeadReceiver');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $myvars);
curl_exec ($c);
curl_close ($c);
} else {
echo '<p>Please make sure you have filled out the form completely</p>';
}
?>
这是我返回的响应的原始输出:
<?xml version="1.0" encoding="utf-8"?>
<PostResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.leadproweb.com/">
<isValidPost>false</isValidPost>
<ResponseType>Duplicate_Lead</ResponseType>
<ResponseDetails>Duplicate Lead, Last Received On: 9/27/2013 2:17:26 PM</ResponseDetails>
<LeadIdentifier>20889333</LeadIdentifier>
<VendorAccountAssigned>0</VendorAccountAssigned>
<PendingQCReview>false</PendingQCReview>
<Price>0</Price>
<RedirectURL />
</PostResponse>
当我尝试使用 SimpleXmlElement 或 simplexml_load_string() 之类的方法来解析 XML 时,它们似乎被忽略了,我无法摆脱原始 XML 输出除非我删除 curl_exec($c) 行。
是不是我做错了什么?
【问题讨论】:
-
您是否尝试过分配输出:
$response = curl_exec( $c );?你打算如何解析它? -
是的,我已经尝试过这样做,然后执行
print_r ($response);,但它没有给我任何结果。 -
@Evster
var_dump($response);的结果是什么? -
@Evster 查看页面的源代码(在浏览器中右键单击,选择“查看源代码”)!
-
OK 所以
print_r ($response);在我查看源代码时实际上给了我1的值。在源代码中调用var_dump($response);会得到bool(true)。但我应该注意到,在显示这些数据之前,源代码仍然会吐出所有不需要的 XML,如我原来的帖子中所述。