ホームページ  >  記事  >  php教程  >  PHP + ソケットプログラミング演習の返信

PHP + ソケットプログラミング演習の返信

WBOY
WBOYオリジナル
2016-06-21 08:47:341086ブラウズ

学習の途中でもあるので、最初はアイデアやコードを描き、最終的には自分のアイデアに基づいて完成させ、後で改善したり変更したりすることもあります。

/**

* HTTP リクエストを送信するための php+socket プログラミング

* @version c.php

* シミュレーションブログパークのコメント

*/

インターフェイス プロト{

// 接続 URL

パブリック関数 conn($url);

//取得リクエストを送信します

パブリック関数 get();

//投稿リクエストを送信

パブリック関数 post($body);

//接続を閉じます

パブリック関数 close();

}

クラス Http は Proto を実装します{

protected $response = '';

protected $fh=null;

protected $errno = -1;

protected $errorstr = '';

protected $line = array();

protected $header = array();

protected $body = array();

public $url = array();

パブリック関数 __construct($url){

$this->conn($url);

$this->setHeader('Host: ' . $this->url['host']);

}

// リクエストライン

保護された関数 setLine($method){

$this->line[0] = $method . $this->url['path'] . 'HTTP/1.1';

}

// ヘッダー情報

パブリック関数 setHeader($headerline){

$this->header[] = $headerline;

}

// 本体情報

保護された関数 setBody($body){

$this->body[] = http_build_query($body);

}

// 接続 URL

パブリック関数 conn($url){

$this->url = parse_url($url);

if(!isset($this->url['port'])){

$this->url['port'] = 80;

}

$this->fh = fsockopen($this->url['host'],$this->url['port'],$this->errno,$this->errorstr, 3);

}

// get リクエストを構築します

パブリック関数 get(){

$this->setLine('GET');

$this->request();

$this->response を返す;

}

//投稿リクエストを送信

パブリック関数 post($bo){

$this->setLine('POST');

// コンテンツタイプ

$this->setHeader("Content-type: application/x-www-form-urlencoded");

$this->setBody($bo);

// コンテンツの長さ

$this->setHeader("Content-length: " .strlen($this->body[0]));

$this->request();

$ this-> を返します。

}

パブリック関数 request(){

$req = array_merge($this->line,$this->header,array(''),$this->body,array(''));

//print_r($req);die;

$req = implode(PHP_EOL,$req) // PHP_EOL 改行

// echo $req;die;

fwrite($this->fh,$req);

while(!feof($this->fh)){

$this->response .= fread($this->fh,1024);

}

$this->close();

}

パブリック関数 close(){

fclose($this->fh);

}

}

上記は簡単なクラスです

require("./c.php") //上記のクラスを導入します

$url = "http://www.cnblogs.com/mvc/PostComment/Add.aspx";

$http = 新しい Http($url);

$http->setHeader("Cookie:xxxx");

$http->setHeader("参照元: http://www.cnblogs.com/geek12/p/4024793.html");

$http->setHeader("ユーザーエージェント: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0");

$msg =array(

"blogApp"=>"geek12",

"body"=>"来自ロボット",

"parentCommentId"=>0,

"postId"=>4024793);

$http->post($msg);



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPとEXCEL PHPExcel次の記事:PHPとEXCEL PHPExcel