2017-09-08 10 views
1

私はPOSTサーバーを保護する要求をしており、かなりの時間がかかります。私はそれをより速くしたい。それを行うチャンスはありますか?それは次のようになります:OkHttpリクエストをより速くするには?

private class GetTokenTask extends AsyncTask<Void, Void, String> { 

    private final String LOG_TAG = MainActivity.class.getSimpleName(); 

    private Call mCallToServer; 
    private String mAccessToken; 
    private OkHttpClient mHttpClient; 
    private JSONObject mResponseJSON; 
    private Response mResponseFromServer; 

    @Override 
    protected String doInBackground(Void... params) { 
     mHttpClient = new OkHttpClient(); 

     mCallToServer = mHttpClient.newCall(requestToOAuth()); 
     try { 
     mResponseFromServer = mCallToServer.execute(); 
     mResponseJSON = new JSONObject(mResponseFromServer.body().string()); 
     mAccessToken = mResponseJSON.getString(getString(R.string.access_token_key)); 

     Log.i(LOG_TAG, mAccessToken); 
     Log.i(LOG_TAG, JWTUtils.decoded(mAccessToken)); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
     return mAccessToken; 
    } 

    @Override 
    protected void onPostExecute(String token) { 
     super.onPostExecute(token); 
    } 
    } 

多分、別のライブラリですか?

+1

ネットワークの速度が遅く、サーバーが同時に処理する要求が多い、または要求に実際に時間がかかります完了する。最高のチャンスは、応答を受信するのに必要な時間が同じかどうかを確認するためにPostman(または同様のもの)から試してみることです。本当なら、あなたは本当に何をすべきかを知ることはできませんが、もしそうでなければ、あなたは要求を送る間に他に何をするかを知るべきです。 –

答えて

3

最初に、OkHttp 3.9.0の実験的なEventListener APIを試して、どこの時間を費やしているかを確認してください。

https://github.com/square/okhttp/wiki/Events

また、スピードがいかに重要であるかによって決まります。どのくらいの速度で正確さを交換したいですか。しかし、壊れる可能性のあるたくさんの理由がありますので、正しい解決策に戻す必要があります。

  • DNSと既知のホストがある場合は、最初のリクエストに使用することができます。
  • すぐにウォームアップ要求を実行し、最初に接続を確立します。
  • HTTP/2が動作していることを確認してください。
  • レスポンスが大きい場合は、コンテンツをストリーミングして最後のバイトではなく最初のバイトで処理を開始します。
関連する問題