2017-09-08 6 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

많은 근본 원인이있을 수 있기 때문에 이러한 종류의 작업을 제어 할 수 없습니다. 네트워크가 느리거나, 서버가 동시에 처리 할 요청이 많거나 요청에 많은 시간이 걸릴 수 있습니다. 완료하십시오. 가장 좋은 기회는 응답을 받기 위해 필요한 시간이 같은지 확인하기 위해 우편 배달부 (또는 이와 비슷한)에서 시도하는 것입니다. 사실이라면 무엇을 해야할지 실제로 알 수 없지만 요청하지 않으면 요청을 보내는 동안 무엇을해야하는지 알 수 있습니다. –

답변

3

먼저 OkHttp 3.9.0의 실험용 EventListener API를 사용하여 시간을 어디에서 보는지 확인하십시오.

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

는 또한 속도가 얼마나 중요한지 따라 달라집니다. 얼마만큼의 속도로 정확성을 교환하고 싶습니까? 그러나 올바른 솔루션을 대체해야하는 이유가 수없이 많습니다.

  • DNS와 사용자가 알고있는 호스트가있는 경우 첫 번째 요청에 사용할 수있는 호스트를 사용할 수 있습니다.
  • 최대한 빨리 실행 요청을 실행하여 최대한 빨리 첫 번째 연결을 설정합니다.
  • HTTP/2가 작동하는지 확인하십시오.
  • 응답이 큰 경우 내용을 스트리밍하여 마지막 바이트가 아닌 첫 번째 바이트에서 처리를 시작합니다.