美文网首页golang
FastHttpClient

FastHttpClient

作者: icecooly | 来源:发表于2017-06-20 00:32 被阅读577次

    简单易用的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

        本文链接:https://www.haomeiwen.com/subject/beznqxtx.html