DELETE
、GET
、POST
、PUT
のリクエストは、cURLのようなサードパーティのライブラリを必要とせずにPHPでリクエストしたいと考えています。第三者のライブラリを使用せずにPHPでHTTPリクエストを行う
チップはありますか?
DELETE
、GET
、POST
、PUT
のリクエストは、cURLのようなサードパーティのライブラリを必要とせずにPHPでリクエストしたいと考えています。第三者のライブラリを使用せずにPHPでHTTPリクエストを行う
チップはありますか?
1つのオプションは使用することですfsockopen():
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET/HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
標準fopen
機能使用している自分がfsockopen
を使用してHTTPリクエストを構築するよりも簡単な方法:
$fh = fopen('http://example.com', 'r');
while (!feof($fh)) {
$content .= fread($fh, 8192);
}
fclose($fh);
あなたは、より多くの複合体を作ることができますがstream_context_create
を使用してfopen
に引き渡すことができる要求(例:POST
):
$querystring = http_build_query(array(
'name' => 'SomeName',
'password' => 'SomePassword'
));
$context = stream_context_create(array(
'http' => array (
'method' => 'POST',
'content' => $querystring
)
));
$fh = fopen('http://example.com', 'r', false, $context);
// the request will be a POST
と思うfile_get_contents()関数でGETを行うことができますし、POST要求のパラメータをクエリ文字列に追加できますか?たとえば、http://example.com/saveUser?name=SomeName&password=SomePassword? – Mark
@Marco編集を参照してください。その他のオプションについては、マニュアルの[HTTPコンテキストオプション](http://www.php.net/manual/en/context.http.php)を参照してください。 – lonesomeday
fopenとfsockopenは確かに機能しますが、もう1つのオプションはfile_get_contentsです。 file_get_contentsでは、データの読み方を心配する必要はありません。
$data = file_get_contents($url);
は、PUTリクエストを発行するように、第三のパラメータにstream_context_createで作成したコンテキストを送信するために:私はそこにある理由、これがあると思い
// Create stream
$headers = array(
"http" => array(
"method" => "PUT"
)
);
$context = stream_context_create($headers);
$data = file_get_contents($url, false, $context);
GETの例は次のように、ただ一つの呼び出しですPHPのためのcURLは、それをサポートするホストでなければなりません。 – Pablo