OkHttpRequestHttp.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package cn.nosum.http.okhttp;
  2. import cn.nosum.http.AbsRequestHttp;
  3. import cn.nosum.http.RequestHttp;
  4. import cn.nosum.http.RequestHttpProperties;
  5. import cn.nosum.http.enums.HttpType;
  6. import cn.nosum.http.jodd.JoddSocketHttpConnectionProvider;
  7. import jodd.http.HttpConnectionProvider;
  8. import jodd.http.ProxyInfo;
  9. import okhttp3.Credentials;
  10. import okhttp3.OkHttpClient;
  11. import java.util.concurrent.TimeUnit;
  12. /**
  13. * OkHttp 请求代理封装.
  14. *
  15. * @author Young
  16. */
  17. public class OkHttpRequestHttp extends AbsRequestHttp<OkHttpClient, OkHttpProxyInfo> {
  18. public OkHttpRequestHttp(RequestHttpProperties properties) {
  19. if (properties.getHttpProxyHost() != null && properties.getHttpProxyPort() > 0) {
  20. httpProxy = OkHttpProxyInfo.httpProxy(properties.getHttpProxyHost(),
  21. properties.getHttpProxyPort(),
  22. properties.getHttpProxyUsername(),
  23. properties.getHttpProxyPassword());
  24. }
  25. OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
  26. if (httpProxy != null) {
  27. clientBuilder.proxy(getRequestHttpProxy().getProxy());
  28. clientBuilder.authenticator((route, response) -> {
  29. String credential = Credentials.basic(httpProxy.getProxyUsername(), httpProxy.getProxyPassword());
  30. return response.request().newBuilder().header("Authorization", credential).build();
  31. });
  32. }
  33. clientBuilder.connectTimeout(properties.getConnectTimeout(), TimeUnit.MILLISECONDS).readTimeout(properties.getReadTimeout(), TimeUnit.MILLISECONDS);
  34. httpClient = clientBuilder.build();
  35. }
  36. @Override
  37. public HttpType getRequestType() {
  38. return HttpType.JODD_HTTP;
  39. }
  40. }