purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

ソケット通信で1プッシュ2アクション!


今回、ある外部aspサービスを利用するんだけど、そのサービスのAPIに、登録、削除の機能はあっても、何故か変更の機能が標準ではないので、
1つのボタンを押したら、一旦削除して、もう一度登録で、合わせて変更!ってしようということになった。


探してたら、Take a RestさんのPHPでフォームを介さずにGETとPOSTを送信するという記事を見つけて、試してみたけど、何故か上手くいかなかったので、更に探してみると・・・


なんと自分のページにたどりついたw(゜o゜)w
前にMOVIE CASTERのときにPEARのソケット通信を使った時の記事があってすっかり忘れてたんですね!
しかもPEARだともうちょっと楽チンになりそう。


というわけで

今回はソケット通信部分のみを抜粋します。

<?php
require_once("HTTP/Request.php");

$res = socket("http://xxx.jp",$param,$data); //postするURI, パラメータ名, データ

function socket($uri, $param, $data){
	// ソケットを開き、送信形式を指定し、データを送信する
	$req = &new HTTP_Request($uri);
	// メソッドをPOSTにする。
	$req->setMethod(HTTP_REQUEST_METHOD_POST);
	// データを設定
	$req->addPostData($param, $data);
	
	// 送信
	<del>$req->sendRequest();</del> ここで送信すると2重送信になっちゃう><
	// 結果を受け取る
	$response = $req->getResponseBody();
 
	if (!PEAR::isError($req->sendRequest())) {
		return $response;
	}else {
		print "pear error";
	}
}

?>

今のfuncitonだと複数のパラメータに対応してないけど、その辺は必要になったら考えようー。
といっても渡す値を配列にすればいいだけだと思うけど。


参考サイト:Pukiwiki研究/トライアル/PEAR::HTTP_Request