Techracho

PEAR::XML_RPC2で簡単サーバ

このエントリーをはてなブックマーク Share
2010.01.13    PHP, ネットワーク, 馬場   タグ: —    baba   

XML_RPCのクライアントを開発するとき、ダミーでサーバが必要になります。
手っ取り早いダミーとして、PHPのPEAR::XML_RPC2が便利です。以前クライアント側は紹介しましたが、今回はサーバの超基本的な使い方。

ダウンロード
http://pear.php.net/package/XML_RPC2からダウンロードできます。

使い方
適当な場所に設置したら、以下のようにincludeして、各アクションに対応する関数を定義します。
そして、XML_RPC_Serverでアクション名と実行するアクションの対応を配列で渡せばOKです。

require_once("XML/RPC.php");
require_once("XML/RPC/Server.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

function  version($params) {
	return new XML_RPC_Response(new XML_RPC_Value('1.0', 'string'));
}

function average($params) {
	$v1 = $params->getParam(0)->scalarval();
	$v2 = $params->getParam(1)->scalarval();
	return new XML_RPC_Response(new XML_RPC_Value($v1 + $v2, 'int'));
}

new XML_RPC_Server(array(
	"Test.version" => array("function" => "version"),
	"Test.average" => array("function" => "average"),
));

とってもかんたん。

NSURLRequestでsetHTTPBodyするとtimeoutIntervalが上書きされる

このエントリーをはてなブックマーク Share
    ネットワーク, 馬場   タグ: , —    baba   

先日に引き続き、timeoutIntervalが無視される件について。

POSTする際は、NSMutableURLRequestを用いて、setHttpBodyでPOSTデータを入れます。
しかし、これを行うとtimeoutIntervalが強制的に240秒に設定されてしまいます。
さらに酷いことに、その後setTimeoutIntervalを行っても無視されます。

以下検証コード↓

NSURL *url = [NSURL URLWithString:@"http://www.bpsinc.jp"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSLog(@"%g", [req timeoutInterval]); //60

[req setHTTPBody:[NSData data]];
NSLog(@"%g", [req timeoutInterval]); //240

[req setTimeoutInterval:10.0];
NSLog(@"%g", [req timeoutInterval]); //240

これはCocoaのバグでしょうか?

あまりに酷すぎるので、何か基本的な間違いを犯していると信じたいところです。
どなたか情報をお持ちなら教えて下さい!

1月14日追記
詳しい方から、「仕様です」との情報を頂きました。
非同期通信を使って、タイムアウトは自分で処理する必要があるそうです・・・

COPYRIGHT [C] 2009 BEYOND PERSPECTIVE SOLUTIONS LTD. ALL RIGHTS RESERVED.