0

そこで、CurlとPOSTメソッドを使用してサーバーに情報を渡し、そのサーバーからXMLの形式で情報を取得するphpスクリプトに取り組んでいます。次に、この情報を取得して、読み取り可能な形式に解析します。ユーザー。

curlを使用して情報を取得し、それを変数($ result)にロードします。次に、この情報をsimpleXMLにロードし、変数$routeinfoに格納します。ただし、var_dump($ routeinfo)を実行すると、データが保存されていないようです。エコーすることで、$resultにデータが存在することを確認しました。

また、$ resultをエコーし​​たときにXMLがブラウザーに表示されなかったことが原因である可能性があることもわかりました(ただし、ソースを確認すると表示されます)。htmlentitiesを使用したかどうかを確認するだけですが、<はhtmlと同等であると解釈されるため、多くのエラーが発生します。とにかく、私は行き詰まりに達し、無駄にさまざまな提案を実装するためにかなりの数時間を記録しました。私のコードは以下のとおりです。レンダリングできるヘルプをいただければ幸いです。

<?php 
//retrieve form data in a variable
$input = $_POST['stopNo'] ;

//declare other variables needed
$api_key = 'xxxkey' ;
$api_id = 12345 ;
$url = 'url to send data to' ; 
$querystring = "appID=". $api_id . "&apiKey=" . $api_key . "&stopNo" . $input ;
$data = urlencode($url) ; 


//curl using

$ch = curl_init() ; 

//set up curl

curl_setopt($ch, CURLOPT_URL, 'urlsendingdatato');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'appID='.urlencode($api_id).'&apiKey=' .urlencode($api_key) . '&stopNo=' .urlencode($input) );
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0 ) ; 
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8") ;
curl_setopt($ch, CURLOPT_BINARYTRANSFER , TRUE) ;


//execute and gather info
$result = curl_exec($ch) ; 

//close connection
curl_close($ch) ;

//format data 
//ent at the moment serves no purpose doesn't render the information correctly
$ent = htmlentities($result);
$routeinfo = new SimpleXMLElement($result) ;

//print data
echo "<br> $result <br>" ; 
var_dump($routeinfo) ;


?> 
4

1 に答える 1

0

simpleXML オブジェクトの作成時に問題が発生しているようです。したがって、適切に定義された XML ファイルを使用して新しい simpleXMLElement オブジェクトを作成してみることができます。それが機能する場合は、フェッチされた xml ファイルが適切な形式ではないことを意味します。

$xml="<?xml version='1.0'?><book><author>steve</author><price>200</price><name>Its my life</name></book>";
$test= new SimpleXMLElement($xml);
var_dump($test);

これは私のために働く!

ただし、一般に、xml の解析に問題がある場合、simpleXMLElement はエラーをスローします。あなたの場合、エラーが返されましたか?または、エラー報告 (error_reporting(0); ) をオフにしている可能性があります。

于 2012-05-20T12:42:47.957 に答える