0

cURL を使用して HTML フォームのコンテンツをサードパーティ サービスに送信すると、XML 応答が返されます。しかし、私が何をしていても、その XML 応答を解析して結果の表示をカスタマイズすることはできないようです。

フォームを処理するためのコードは次のとおりです (いくつかの ID 番号が検閲されていることに注意してください)。

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

SimpleXmlElementsimplexml_load_string()などのメソッドを使用して XML を解析しようとすると、無視されているように見え、 curl_exec($c)行を削除しない限り生の XML 出力を取り除くことができません。

私が間違っていることはありますか?

4

1 に答える 1

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 );

最後に、選択したパーサーで応答文字列を解析します。

于 2013-09-27T21:50:48.383 に答える