本文整理汇总了PHP中Zend_Amf_Request::getAmfHeaders方法的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Amf_Request::getAmfHeaders方法的具体用法?PHP Zend_Amf_Request::getAmfHeaders怎么用?PHP Zend_Amf_Request::getAmfHeaders使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend_Amf_Request
的用法示例。
在下文中一共展示了Zend_Amf_Request::getAmfHeaders方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testResponseShouldAggregateMessageHeaders
public function testResponseShouldAggregateMessageHeaders()
{
$this->header1 = new Value\MessageHeader('foo', false, 'bar');
$this->header2 = new Value\MessageHeader('bar', true, 'baz');
$this->_response->addAmfHeader($this->header1)->addAmfHeader($this->header2);
$headers = $this->_response->getAmfHeaders();
$this->assertEquals(2, count($headers));
$this->assertContains($this->header1, $headers);
$this->assertContains($this->header2, $headers);
}
示例2: testAmf0CredentialsInHeader
/**
* Test Amf0 credentials sent to the server
*
*/
public function testAmf0CredentialsInHeader()
{
$myRequest = file_get_contents(dirname(__FILE__) . '/Request/mock/credentialsheaderAmf0.bin');
// send the mock object request to be deserialized
$this->_request->initialize($myRequest);
// Make sure that no headers where recieved
$this->assertEquals(1, sizeof($this->_request->getAmfHeaders()));
$requestHeaders = $this->_request->getAmfHeaders();
$this->assertTrue($requestHeaders[0] instanceof Zend_Amf_Value_MessageHeader);
$this->assertEquals('Credentials', $requestHeaders[0]->name);
$this->assertFalse($requestHeaders[0]->mustRead);
$data = $requestHeaders[0]->data;
// Check the resulting header
$this->assertEquals('admin', $data->userid);
$this->assertEquals('pw123', $data->password);
}
示例3: _handle
/**
* Takes the deserialized AMF request and performs any operations.
*
* @todo should implement and SPL observer pattern for custom AMF headers
* @todo DescribeService support
* @param Zend_Amf_Request $request
* @return Zend_Amf_Response
* @throws Zend_Amf_server_Exception|Exception
*/
protected function _handle(Zend_Amf_Request $request)
{
// Get the object encoding of the request.
$objectEncoding = $request->getObjectEncoding();
// create a response object to place the output from the services.
$response = $this->getResponse();
// set response encoding
$response->setObjectEncoding($objectEncoding);
$responseBody = $request->getAmfBodies();
$handleAuth = false;
if ($this->_auth) {
$headers = $request->getAmfHeaders();
if (isset($headers[Zend_Amf_Constants::CREDENTIALS_HEADER]) && isset($headers[Zend_Amf_Constants::CREDENTIALS_HEADER]->userid)) {
$handleAuth = true;
}
}
// Iterate through each of the service calls in the AMF request
foreach ($responseBody as $body) {
try {
if ($handleAuth) {
if ($this->_handleAuth($headers[Zend_Amf_Constants::CREDENTIALS_HEADER]->userid, $headers[Zend_Amf_Constants::CREDENTIALS_HEADER]->password)) {
// use RequestPersistentHeader to clear credentials
$response->addAmfHeader(new Zend_Amf_Value_MessageHeader(Zend_Amf_Constants::PERSISTENT_HEADER, false, new Zend_Amf_Value_MessageHeader(Zend_Amf_Constants::CREDENTIALS_HEADER, false, null)));
$handleAuth = false;
}
}
if ($objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING) {
// AMF0 Object Encoding
$targetURI = $body->getTargetURI();
$message = '';
// Split the target string into its values.
$source = substr($targetURI, 0, strrpos($targetURI, '.'));
if ($source) {
// Break off method name from namespace into source
$method = substr(strrchr($targetURI, '.'), 1);
$return = $this->_dispatch($method, $body->getData(), $source);
} else {
// Just have a method name.
$return = $this->_dispatch($targetURI, $body->getData());
}
} else {
// AMF3 read message type
$message = $body->getData();
if ($message instanceof Zend_Amf_Value_Messaging_CommandMessage) {
// async call with command message
$return = $this->_loadCommandMessage($message);
} elseif ($message instanceof Zend_Amf_Value_Messaging_RemotingMessage) {
require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
$return = new Zend_Amf_Value_Messaging_AcknowledgeMessage($message);
$return->body = $this->_dispatch($message->operation, $message->body, $message->source);
} else {
// Amf3 message sent with netConnection
$targetURI = $body->getTargetURI();
// Split the target string into its values.
$source = substr($targetURI, 0, strrpos($targetURI, '.'));
if ($source) {
// Break off method name from namespace into source
$method = substr(strrchr($targetURI, '.'), 1);
$return = $this->_dispatch($method, $body->getData(), $source);
} else {
// Just have a method name.
$return = $this->_dispatch($targetURI, $body->getData());
}
}
}
$responseType = Zend_AMF_Constants::RESULT_METHOD;
} catch (Exception $e) {
$return = $this->_errorMessage($objectEncoding, $message, $e->getMessage(), $e->getTraceAsString(), $e->getCode(), $e->getLine());
$responseType = Zend_AMF_Constants::STATUS_METHOD;
}
$responseURI = $body->getResponseURI() . $responseType;
$newBody = new Zend_Amf_Value_MessageBody($responseURI, null, $return);
$response->addAmfBody($newBody);
}
// Add a session header to the body if session is requested.
if ($this->isSession()) {
$currentID = session_id();
$joint = "?";
if (isset($_SERVER['QUERY_STRING'])) {
if (!strpos($_SERVER['QUERY_STRING'], $currentID) !== FALSE) {
if (strrpos($_SERVER['QUERY_STRING'], "?") !== FALSE) {
$joint = "&";
}
}
}
// create a new AMF message header with the session id as a variable.
$sessionValue = $joint . $this->_sessionName . "=" . $currentID;
$sessionHeader = new Zend_Amf_Value_MessageHeader(Zend_Amf_Constants::URL_APPEND_HEADER, false, $sessionValue);
$response->addAmfHeader($sessionHeader);
}
// serialize the response and return serialized body.
//.........这里部分代码省略.........
示例4: testResponseHeadersShouldBeSerializedWhenWritingMessage
public function testResponseHeadersShouldBeSerializedWhenWritingMessage()
{
$this->testResponseShouldAggregateMessageHeaders();
$this->_response->finalize();
$response = $this->_response->getResponse();
$request = new Zend_Amf_Request();
$request->initialize($response);
$headers = $request->getAmfHeaders();
$this->assertEquals(2, count($headers));
}