/** * __toString() test */ public function test__toString() { $argv = array('string', true); $this->_request->setMethod('do.Something'); $this->_request->setParams($argv); $xml = $this->_request->__toString(); $this->_testXmlRequest($xml, $argv); }
public function testHandleFunction() { $this->_server->addFunction('ZendTest\\XmlRpc\\testFunction'); $request = new Request(); $request->setMethod('ZendTest\\XmlRpc\\testFunction'); $request->setParams(array(array('value1'), 'key')); $response = $this->_server->handle($request); $this->assertFalse($response instanceof Fault); $this->assertEquals('key: value1', $response->getReturnValue()); }
/** * PingBackを送信 */ protected function sendPingBack() { $err = array(); $links = array(); // Wikiのソースのアドレスを取得 if (preg_match_all('/(https?://[a-zA-Z0-9./~_]+)/', $wiki->get(), $links, PREG_PATTERN_ORDER) === false) { // ない場合そのままリターン return; } // 重複を削除 $target_uris = array_unique($links[0]); foreach ($target_uris as $target_uri) { // 初期値 $pingback = false; // ターゲットとなるURL接続 $client = new Client($target_uri); // HEADメソッドで接続し、ヘッダーのみ取得 $client->setMethod(Request::METHOD_HEAD); // 返り値を取得 $response = $client->send(); // アクセス失敗 if (!$response->isSuccess()) { continue; } // 返り値のヘッダーからPingBackのURIを取得 $pingback = $response->getHeaders()->get('x-pingback'); // x-pingbackヘッダーがない場合(このへんの処理は重そう) if ($pingback === false) { try { // GETでアクセスしてコンテンツを取得し、linkタグを探す。 $client->setMethod(Request::METHOD_GET); // 返り値を取得 $response = $client->send(); // linkタグからPingBackのURIを取得 if (preg_match('<link rel="pingback" href="([^"]+)" ?/?>', $response->getBody(), $matches) !== false) { $pingback = isset($matches[1]) ? $matches[1] : null; } } catch (Exception $e) { $err[] = $e; } } // PingBack送信先が見つからない場合スキップ if ($pingback === false) { continue; } unset($client, $response); // PingBackで送信する内容 $request = new XmlRpcRequest(); $request->setMethod('pingback.ping'); $request->setParams(array($source_uri, $target_uri)); // 例外を取得 try { // PingBack送信先に接続 $client = new XmlRpcClient($pingback); // 送信 $client->doRequest($request); } catch (\Zend\XmlRpc\Client\Exception\FaultException $e) { $err[] = $e; } $err[] = '-----' . "\n"; unset($client, $request); } return $err; }