FastHttpClient

简单易用的httpclient

封装OkHttp3,对外提供了POST请求、GET请求、上传文件、下载文件、https请求、cookie管理等功能

https://github.com/icecooly/FastHttpClient

功能点

  • 支持多线程异步请求
  • 支持Http/Https协议
  • 支持同步/异步请求
  • 支持异步延迟执行
  • 支持Cookie持久化
  • 支持JSON、表单提交
  • 支持文件和图片上传/批量上传,支持同步/异步上传,支持进度提示

简单的例子

1.同步Get请求(访问百度首页,自动处理https单向认证)

String url="https://www.baidu.com";
String resp=FastHttpClient.get().url(url).build().execute().string();

2.异步Get请求(访问百度首页)

FastHttpClient.get().url("https://www.baidu.com").build().
    executeAsync(new StringCallback() {
        @Override
        public void onFailure(Call call, Exception e, int id) {
            logger.error(e.getMessage(),e);
        }
        @Override
        public void onSuccess(Call call, String response, int id) {
            logger.info("response:{}",response);
        }
    });

3.百度搜索关键字'微信机器人'

FastHttpClient.get().
            url("http://www.baidu.com/s").
            addParams("wd", "微信机器人").
            addParams("tn", "baidu").
            build().
            execute().
            string();

4.异步下载一张百度图片,有下载进度,保存为/tmp/tmp.jpg

FastHttpClient.get().
    url("http://e.hiphotos.baidu.com/image/pic/item/faedab64034f78f0b31a05a671310a55b3191c55.jpg").
        build().addNetworkInterceptor(new DownloadFileInterceptor(){
            @Override
            public void updateProgress(long downloadLenth, long totalLength, boolean isFinish) {
                System.out.println("updateProgress downloadLenth:"+downloadLenth+
                        ",totalLength:"+totalLength+",isFinish:"+isFinish);
            }
        }).
        executeAsync(new DownloadFileCallback("/tmp/tmp.jpg") {//save file to /tmp/tmp.jpg
                @Override
                public void onFailure(Call call, Exception e, int id) {
                    e.printStackTrace();
                }
                @Override
                public void onSuccess(Call call, File file, int id) {
                    super.onSuccess(call, file, id);
                    System.out.println("filePath:"+file.getAbsolutePath());
                }
                @Override
                public void onSuccess(Call call, InputStream fileStream, int id) {
                    System.out.println("onSuccessWithInputStream");
                }
        });

5.上传文件

byte[] imageContent=FileUtil.getBytes("/tmp/test.png");
FastHttpClient.post().
            url(url).
            addFile("file1", "a.txt", "123").
            addFile("file2", "b.jpg", imageContent).
            build().
            connTimeOut(10000).
            execute();

6.设置网络代理

Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 1088));
Response response = FastHttpClient.
        newBuilder().
        addNetworkInterceptor(logging).
        proxy(proxy).
        build().
        get().
        url("http://www.baidu.com").
        build().
        execute();
logger.info(response.string());

7.设置Http头部信息

String url="https://www.baidu.com";
Response response=FastHttpClient.
            get().
            addHeader("Referer","http://news.baidu.com/").
            addHeader("cookie", "uin=test;skey=111111;").
            url(url).
            build().
            execute();
System.out.println(response.string());

你可能感兴趣的:(FastHttpClient)