* @param PhpXmlRpc\Request|array $msg
* @param int|array $errorCode
* @param bool $returnResponse
- * @return mixed|\PhpXmlRpc\Response|\PhpXmlRpc\Response[]|\PhpXmlRpc\Value|string|void
+ * @return mixed|\PhpXmlRpc\Response|\PhpXmlRpc\Response[]|\PhpXmlRpc\Value|string|null
*/
protected function send($msg, $errorCode = 0, $returnResponse = false)
{
return $r->value();
}
} else {
- return;
+ return null;
}
}
+ /**
+ * Adds (and replaces) query params to the url currently used by the client
+ * @param array $data
+ */
+ protected function addQueryParams($data)
+ {
+ $query = parse_url($this->client->path, PHP_URL_QUERY);
+ parse_str($query, $vars);
+ $query = http_build_query(array_merge($vars, $data));
+ $this->client->path = parse_url($this->client->path, PHP_URL_PATH) . '?' . $query;
+ }
+
public function testString()
{
$sendString = "here are 3 \"entities\": < > & " .
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'UTF-8';
// no encoding declaration either in the http header or xml prolog, let mb_detect_encoding
// (used on the server side) sort it out
- $this->client->path = $this->args['URI'].'?DETECT_ENCODINGS[]=EUC-JP&DETECT_ENCODINGS[]=UTF-8';
+ $this->addQueryParams(array('DETECT_ENCODINGS' => array('EUC-JP', 'UTF-8')));
$v = $this->send(mb_convert_encoding($str, 'EUC-JP', 'UTF-8'));
$this->assertEquals($sendString, $v->scalarval());
PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'ISO-8859-1';
// no encoding declaration either in the http header or xml prolog, let mb_detect_encoding
// (used on the server side) sort it out
- $this->client->path = $this->args['URI'].'?DETECT_ENCODINGS[]=ISO-8859-1&DETECT_ENCODINGS[]=UTF-8';
+ $this->addQueryParams(array('DETECT_ENCODINGS' => array('ISO-8859-1', 'UTF-8')));
$v = $this->send($str);
$this->assertEquals($sendString, $v->scalarval());
}
$val = $r[3]->value();
$this->assertTrue(is_array($val), "good2 did not return array");
}
- $this->client->return_type = 'xmlrpcvals';
+ //$this->client->return_type = 'xmlrpcvals';
}
public function testCatchWarnings()
new xmlrpcval('whatever', 'string'),
));
$v = $this->send($m, $GLOBALS['xmlrpcerr']['server_error']);
- $this->client->path = $this->args['URI'] . '?EXCEPTION_HANDLING=1';
+ $this->addQueryParams(array('EXCEPTION_HANDLING' => 1));
$v = $this->send($m, 1); // the error code of the expected exception
- $this->client->path = $this->args['URI'] . '?EXCEPTION_HANDLING=2';
+ $this->addQueryParams(array('EXCEPTION_HANDLING' => 2));
// depending on whether display_errors is ON or OFF on the server, we will get back a different error here,
// as php will generate an http status code of either 200 or 500...
$v = $this->send($m, array($GLOBALS['xmlrpcerr']['invalid_return'], $GLOBALS['xmlrpcerr']['http_error']));