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