2016-05-07 5 views
0

URLの画像を表示するTitanium Androidアプリがあります。私はこれらのイメージを提供するために控え目なものを使用したいと思います。リクエストにAccept-Typeが指定されていない場合、406が返されないようにする方法

私はブラウザから呼び出されたときに動作するストリーム応答RPCサービスを持っています。しかし、アンドロイド上では、アンドロイドImageViewAccept-Typeヘッダーを送信せず、アティージリティーは406 - Cannot honor Accept type specifiedでコールを拒否しているように見えます。

このRPCサービスだけをチェックすると、Accept-Typeのチェックを無視する方法がありますか。着信要求の

答えて

1

AcceptヘッダはZF\ContentNegotiationAcceptFilterListenerクラス内でチェックされず、ヘッダはthe validateMediaType method returns false存在し、次いでApiProblemResponseat line 55作成され受け入れる場合。

もちろん、すべてのリクエスト内に受け入れヘッダがあることを確認するのが最善ですが、何とかできない場合は、すべてのリクエスト内にデフォルトの受け入れヘッダを設定することができます。

あなたは単にあなたのアプリケーションModule.php方法でこれを追加することによって、それを解決することができます。

/** 
* {@inheritDoc} 
*/ 
public function onBootstrap(MvcEvent $event) 
{ 
    $application = $event>getApplication(); 
    $eventManager = $application->getEventManager(); 

    // Attach setDefaultAcceptHeader method with higher priority then AcceptFilterListener 
    $eventManager->attach(MvcEvent::EVENT_ROUTE, [$this, 'setDefaultAcceptHeader'], 100); 
} 

/** 
* @var MvcEvent $event 
*/ 
public function setDefaultAcceptHeader(MvcEvent $event) 
{ 
    $request = $event->getRequest(); 

    if(! $request instanceof \Zend\Http\Request){ 
     // Not a http request, return 
     return; 
    } 
    // Check if we have an accept header, if not set to 'application/json' 
    $headers = $request->getHeaders(); 
    if(!$headers->has('accept')){ 
     $headers->addHeaderLine('accept', 'application/json'); 
    } 
} 
関連する問題