2017-01-17 26 views
0

私はバックエンドAPIからイオンクッションライブラリを使用していくつかのjsonsを取得しようとしています。 私はAPIルートのいずれかで成功とそれを行うことができますが、他の私は次の答えがあります:レスポンスはキャッシュ可能ではありません。Ion Koush Library - レスポンスがキャッシュ可能ではありません

{ 
    "id_comentario": 5, 
    "id_venda_vendas": { 
     "id_venda": 139, 
     "id_cliente_cliente": { 
     "id_cliente": 22, 
     "nome": "nome", 
     "telefone": "nao_tem_ainda_layout", 
     "cpf": "cpf", 
     "endereco": "endereco", 
     "primeira_vez": true, 
     "data_nascimento": "dob", 
     "observacao": null, 
     "foto": null, 
     "email": "nao_tem_ainda_layout", 
     "id_ultima_compra": {} 
     }, 
     "id_loja_loja": { 
     "id_loja": 2, 
     "nome": "nome", 
     "nome_fantasia": "nomefantasia", 
     "cnpj": "cnpj" 
     }, 
     "data": "2016-11-18", 
     "hora": "15:36:02" 
    }, 
    "id_funcionario_funcionario": { 
     "id_funcionario": 2, 
     "nome": "nome", 
     "cargo": "cargo" 
    }, 
    "id_tipo_comentario_tipo_comentario": { 
     "id_tipo_comentario": 2, 
     "tipo": "Tipo" 
    }, 
    "descricao": "nao tem descricao" 
    } 
] 
:JSONはブラウザRESTクライアントによって取得され、ここで

> D/LOG: (0 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: preparing request 

>D/LOG: (0 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: preparing request 

>I/LOG: (0 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Using loader: [email protected] 

>D/LOG: (0 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Executing request. 

>V/LOG: (4 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Resolving domain and connecting to all available addresses 

>V/LOG: (10 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: attempting connection to /10.0.2.2:8080 

>V/LOG: (14 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: socket connected 

>V/LOG: (14 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: 
GET /api/comentario/cliente/00013436415782/?format=json HTTP/1.1 
Host: 10.0.2.2:8080 
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Android SDK built for x86_64 Build/LMY48X) 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Accept: */* 
Cache-Control: no-cache 
Authorization: Token a3e8b50ae73aabad0605433f704eb628269f68c8 

>V/LOG: (16 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: request completed 

>W/EGL_emulation: eglSurfaceAttrib not implemented 
>W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7fca6d3b8380, error=EGL_SUCCESS 

>D/OpenGLRenderer: endAllStagingAnimators on 0x7fca6d1e4c00 (ListView) with handle 0x7fca6406c080 

>V/LOG: (433 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Received headers: 

>  HTTP/1.0 200 OK 

>  Date: Tue, 17 Jan 2017 13:28:12 GMT 

>  Server: WSGIServer/0.1 Python/2.7.12 

>  Vary: Accept 

>  X-Frame-Options: SAMEORIGIN 

>  Content-Type: application/json 

>  Allow: GET, HEAD, OPTIONS 

>D/LOG: (433 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Response is not cacheable 
>V/LOG: (433 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Final (post cache response) headers: 

>  HTTP/1.0 200 OK 

>  Date: Tue, 17 Jan 2017 13:28:12 GMT 

>  Server: WSGIServer/0.1 Python/2.7.12 

>  Vary: Accept 

>  X-Frame-Options: SAMEORIGIN 

>  Content-Type: application/json 

>  Allow: GET, HEAD, OPTIONS 

>D/LOG: (433 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: Connection successful 

>V/LOG: (434 ms) http://10.0.2.2:8080/api/comentario/cliente/00013436415782/?format=json: closing out socket (exception) 

そして:ここでの問題をよりよく理解するためのコードです:

Ion.with(clientSummaryActivity.this) 
     .load("GET",url) 
     .setLogging("LOG",Log.VERBOSE) 
     .addQuery("format","json") 
     .setHeader("Authorization",getIntent().getExtras().getString("token")) 
     .asJsonArray() 
     .setCallback(new FutureCallback<JsonArray>() { 
      @Override 
      public void onCompleted(Exception e, JsonArray result) { 
       // do stuff with the result or error 
       if(e != null){ 
        Toast.makeText(clientSummaryActivity.this, "Erro na Query: " + e, Toast.LENGTH_LONG).show(); //cria balao de texto na view indicada 
        Log.v("Query Error2: ",""+e); 
        return; 
       } 
       if(result == null) 
        Log.v("Error: ","resultado vazio"); 
       else 
        Log.v("Teste: ",""+result); 
       return; 
      } 
     }); 
    } 

そして、ここでのデバッグログです

ポイントは、なぜ私はRESTクライアントからそれを得ることができ、IonはResponseがキャッシュ可能ではないと言いますか?それはどういう意味ですか?

OBS:他のクエリから正常な結果を得ることができます。しかし、投稿が長すぎるので、私はここに投稿しません。

答えて

0

イオンはすべてGETリクエストを自動的にキャッシュします。あなたのサーバーは、私が見ているように、ヘッダCache-Control: no-cacheを送ります。つまり、この要求はキャッシュされていません。サーバー上のキャッシュポリシーを変更するか、.noCache()をリクエストに追加することができます。私が使用してそれを解決することができオレストSavchakに

+0

こんにちは、 は答えをいただき、ありがとうございます。 私はすでにこのソリューションを試しましたが、成功しませんでした。確認するだけで、この設定はイオンで行われます。 また、ここにデバッグログがあります: http://pastebin.com/w7JNHiYh 私はDjango RestFrameworkでヘッダーを設定する方法を探しています。おそらく私はこの方法で解決できます。 –

+0

こんにちは私はそれを解決した、私は理由はありません.noCache()それは私のために働いていないので、私は使用した: Ion.getDefault(getApplicationContext())。(getResponseCache()setCaching()。 これですべてがOKです。助けてくれてありがとう。 –

0

ありがとう:

Ion.getDefault(getApplicationContext()).configure().getResponseCache().setCaching(false); 

は、より多くの読書について、確認してください。

https://github.com/koush/ion/issues/228

関連する問題