如何更快地提出OkHttp请求?

Vol*_*yrH 1 post android android-asynctask okhttp

我发出POST请求以保护服务器,这需要相当长的时间.我想让它更快.有机会这样做吗?它看起来像这样:

  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);
    }
  }
Run Code Online (Sandbox Code Playgroud)

也许是另一个图书馆或类似的东西?

Yur*_*mke 5

首先,尝试使用OkHttp 3.9.0的实验性EventListener API来查看它花费时间的位置.

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

这也取决于速度有多重要.你想要多少交易速度的正确性.但是有很多原因可能会破坏,因此您需要回退到正确的解决方案.

  • 如果它的DNS和您已知主机,则可以将它们用于第一个请求.
  • 尽快运行预热请求以尽快建立第一个连接.
  • 确保HTTP/2正常工作.
  • 如果响应很大,则将内容流式传输以开始处理第一个字节而不是最后一个字节.