ホームページ >バックエンド開発 >PHPチュートリアル >PHP ソケットを使用して HTTP リクエストを実装する_PHP チュートリアル

PHP ソケットを使用して HTTP リクエストを実装する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:36:03871ブラウズ

最近、多くの HTTP リモート アクセス プログラムが作成されています。主に使用するのは、.NET クラス ライブラリの WebHttpRequest クラスと共通オブジェクト Microsoft.XMLHTTP です。これらの便利なクラスを使用すると、C# を使用できます。 ASP および Javascript は、他の Web ページにアクセスするための Web クライアントをシミュレートします。しかし今日はPHPを使って同様の機能を実装したいと思ったのですが、なかなか方向性が見つからず、自分で「衣食足りる」しかありませんでした。

現在、PHP には HttpRequest に似たクラスはありません。しかし、公式オンラインドキュメントで HttpRequest クラスのページを見つけましたが、残念なことに、この関数は CVS バージョンにのみ存在する可能性があるとのみ記載されていました。

HTTP アクセスを実装するには、Socket を使用してリクエストを送信し、返された情報を読み取るだけです。そこで、Socket を使用して HttpRequest クラスを作成しました。もちろん、fsockopen() 関数を使用して実装することもできます。ただし、この 2 つの違いはそれほど大きくありません。詳細は添付ファイルを参照してください。

sHostAdd = gethostbyname($arMatchUrlPart[1]);if (empty($arMatchUrlPart[4])){$this->sUri = /;}else{$this->sUri = $arMatchUrlPart[4] ];}if (empty($arMatchUrlPart[3])){$this->iPort = 80;}else{$this->iPort = $arMatchUrlPart[3];}$this->addRequestHeader(ホスト: .$arMatchUrlPart[1]);$this->addRequestHeader(Connection: Close);}function addRequestHeader($sHeader){$this->sRequestHeader .= トリム($sHeader)。 ";}関数 sendRequest($sMethod = GET, $sPostData = ){$sRequest = $sMethod." ".$this->sUri." ";$sRequest .= $this->sRequestHeader;if ($sMethod == POST){$sRequest .= "Content-Type: application/x-www-form-urlencoded ";$sRequest .= "コンテンツの長さ: ".strlen($sPostData)。" ";$sRequest .= " ";$sRequest .= $sPostData。" ";}$sRequest .= " ";$sockHttp =socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if (!$sockHttp){die(socket_create() が失敗しました!);}$resSockHttp =ソケット_connect($sockHttp, $this->sHostAdd, $this-> ;iPort);if (!$resSockHttp){die(socket_connect() が失敗しました!);}socket_write($sockHttp, $sRequest, strlen($sRequest));$this->sResponse = ;while ($sRead =ソケット_読み取り($sockHttp, 4096)){$this->sResponse .= $sRead;}​​socket_close($sockHttp);}関数 getResponse(){return $this->sResponse;}関数 getResponseBody(){$sPatternSeperate = / /;$arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2);return $arMatchResponsePart[1];}function getResponseHead(){$sPatternSeperate = / /;$arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2);return $arMatchResponsePart[0];}}?>

http://www.bkjia.com/PHPjc/508281.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508281.html技術記事最近、私は主に .NET クラス ライブラリの WebHttpRequest クラスと共通オブジェクト Microsoft.XMLHTTP を使用して、次のことを行うことができます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。