2013-09-27 2 views
0

Я представляю содержимое формы HTML сторонней службе с использованием cURL, и он отстреливает ответ XML. Но независимо от того, что я делаю, я не могу разобрать этот ответ XML, чтобы настроить отображение результатов.Анализ неполадок XML-ответа от curl_exec

Вот код для обработки формы (обратите внимание на несколько идентификационных номеров, были подвергнуты цензуре):

<?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> 

When Я пытаюсь использовать такие методы, как SimpleXmlElement или simplexml_load_string() для анализа XML, они, кажется, игнорируются, и я не могу избавиться от необработанного вывода XML, если не удалю curl_exec ($ c) линия.

Есть ли что-то, что я делаю неправильно?

+0

Вы пытались назначить вывод: '$ response = curl_exec ($ c);'? Как вы планировали его разобрать? – Floris

+0

Да, я попытался сделать именно это, а затем выполнил 'print_r ($ response);' но это не дает мне никакого результата. – Evster

+0

@Evster Каков результат 'var_dump ($ response);'? –

ответ

2

Вам нужно добавить

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

, чтобы получить значение (строка) ответа; в противном случае curl_exec просто возвращает логическое значение (успех/сбой). См http://php.net/manual/en/function.curl-exec.php

Затем замените строку

curl_exec($c); 

с

$response = curl_exec($c); 

И, наконец, вы разобрать строку ответа с анализатором вашего выбора.

+0

Спасибо, что это решение, которое я искал! – Evster

+0

Я также должен отметить, что мне нужно устранить прямой вызов 'curl_exec ($ c);' и вместо этого назначить его переменной, иначе я буду сталкиваться с дублирующимися результатами. – Evster

+0

Извините за путаницу Флорис. Ты прав. Я имел в виду, что мне нужно было _обменить вызов 'curl_exec ($ c);' с '$ response = curl_exec ($ c);'. Если бы я оставил оба вызова в моем коде, это не сработало. – Evster

Смежные вопросы