私はPHPと、RESTful APIの操作のすべてに慣れていません。現時点でやりたいのは、プレーンなHTTP GETリクエストを OpenStreetMap API 。
私は simple PHP REST client by tcdent )を使用しており、基本的にその機能を理解しています。現在のチェンジセットを取得するためのサンプルコードOSMでは:
<?php
include("restclient.php");
$api = new RestClient(array(
'base_url' => "http://api.openstreetmaps.org/",
'format' => "xml")
);
$result = $api->get("api/0.6/changesets");
if($result->info->http_code < 400) {
echo "success:<br/><br/>";
} else {
echo "failed:<br/><br/>";
}
echo $result->response;
?>
ブラウザに「http://api.openstreetmaps.org/api/0.6/changesets」というURLを入力すると、XMLファイルが配信されます。ただし、このPHPコードを介して、OSM404ファイルが見つかりませんページを返します。
これはかなりばかげたPHP初心者の質問だと思いますが、これらすべてのクライアントサーバー側プロセスなどについて(まだ)あまり知らないため、何が欠けているのかわかりません。
ご協力いただきありがとうございます!
カールを使用します。 http://www.lornajane.net/posts/2008/using-curl-and-php-to-talk-to-a-rest-service を参照してください
$service_url = 'http://example.com/rest/user/';
$curl = curl_init($service_url);
$curl_post_data = array(
"user_id" => 42,
"emailaddress" => '[email protected]',
);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
$curl_response = curl_exec($curl);
curl_close($curl);
$ xml = new SimpleXMLElement($ curl_response);
OK、問題は明らかに 'format' => "xml"仕様でした。それがなく、SimpleXMLElementの助けを借りて(Martinに感謝)、XMLデータを正しくロードするようになりました:
<?php
include("restclient.php");
$api = new RestClient();
$result = $api->get("http://api.openstreetmap.org/api/capabilities");
$code = $result->info->http_code;
if($code == 200) {
$xml = new SimpleXMLElement($result->response);
echo "Loaded XML, root element: ".$xml->getName();
} else {
echo "GET failed, error code: ".$code;
}
?>
これはXML応答に対してのみ機能するため、あまり柔軟なアプローチではありませんが、現時点では十分であり、OSMAPIから始めることをお勧めします。
ご協力いただきありがとうございます!