SimpleGetRequestExecutor.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package cn.nosum.http;
  2. import cn.nosum.http.apache.ApacheSimpleGetRequestExecutor;
  3. import cn.nosum.http.exception.HttpErrorException;
  4. import cn.nosum.http.jodd.JoddHttpSimpleGetRequestExecutor;
  5. import cn.nosum.http.okhttp.OkHttpSimpleGetRequestExecutor;
  6. import java.io.IOException;
  7. /**
  8. * 简单的 GET 请求执行器.
  9. *
  10. * @param <H> 请求对象
  11. * @param <P> 代理对象
  12. * @param <R> 返回类型
  13. * @author Young
  14. */
  15. public abstract class SimpleGetRequestExecutor<H, P, R> extends SimpleRequestExecutor<H, P, String, R> {
  16. public SimpleGetRequestExecutor(RequestHttp<H, P> requestHttp) {
  17. super(requestHttp);
  18. }
  19. public SimpleGetRequestExecutor(RequestHttp<H, P> requestHttp, ResponseHandler<R,R> responseHandler) {
  20. super(requestHttp, responseHandler);
  21. }
  22. @Override
  23. public <V> V execute(String uri, String queryParam, ResponseHandler<R,V> handler) throws HttpErrorException, IOException {
  24. if (queryParam != null) {
  25. if (uri.indexOf('?') == -1) {
  26. uri += '?';
  27. }
  28. uri += uri.endsWith("?") ? queryParam : '&' + queryParam;
  29. }
  30. return handler.handle(doExecute(uri, queryParam));
  31. }
  32. public static RequestExecutor<String, String> create(RequestHttp requestHttp) {
  33. switch (requestHttp.getRequestType()) {
  34. case APACHE_HTTP:
  35. return new ApacheSimpleGetRequestExecutor(requestHttp);
  36. case JODD_HTTP:
  37. return new JoddHttpSimpleGetRequestExecutor(requestHttp);
  38. case OK_HTTP:
  39. return new OkHttpSimpleGetRequestExecutor(requestHttp);
  40. default:
  41. throw new IllegalArgumentException("非法请求参数");
  42. }
  43. }
  44. }