前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用apache的httpClient对异步网络请求进行封装

使用apache的httpClient对异步网络请求进行封装

作者头像
Meet相识
发布2018-09-12 16:14:46
1.6K0
发布2018-09-12 16:14:46
举报
文章被收录于专栏:技术专栏

1.对返回结果的处理进行规范

代码语言:javascript
复制
public interface INetResult<T> {
    void getNetData(T data) ;
}

2.封装异步请求回调方法

代码语言:javascript
复制
/**
 * Created by gaowenfeng on 2017/8/23.
 * 回调类结果封装
 * 实现FutureCallback接口
 */
@AllArgsConstructor
public class CallbackString implements FutureCallback<HttpResponse>{

    /**
     * 请求成功时对返回结果的处理,须有外部注入
     */
    private INetResult<String> netResult;

 
    /**
     * 成功返回时的回调方法
     * @param response
     */
    public void completed(HttpResponse response) {
        String content = "";
        try {
            content = EntityUtils.toString(response.getEntity(), Constants.ENCONDING);
        } catch (IOException e) {
            e.printStackTrace();
        }
        netResult.getNetData(content);
    }

    /**
     * 失败时候的回调方法
     * @param e
     */
    public void failed(Exception e) {
        e.printStackTrace();
    }

    /**
     * 取消时候的回调方法
     */
    public void cancelled() {
    }
}

3.执行Http请求的方法封装

代码语言:javascript
复制
public class HttpUtil {
    /**
     * 执行post请求
     * @param request
     * @param callBack
     */
    protected static void executePost(HttpPost request, CallbackString callBack){
        //执行请求的对象
        CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
        httpclient.start();
        httpclient.execute(request,callBack);
        try {
            httpclient.close();
        } catch (IOException ignore) {

        }

    }

    /**
     * 将json对象进行封装
     * @param param json对象
     * @return HttpPost可使用的StringEntity
     */
    protected static StringEntity parseEntity(String param){
        StringEntity entity = new StringEntity(param, Constants.ENCONDING);
        entity.setContentEncoding(Constants.ENCONDING);
        entity.setContentType(Constants.CONTENT_TYPE);
        return entity;
    }
}

4. 执行具体的Http请求的service类

代码语言:javascript
复制
public class HttpClient extends HttpUtil{   //继承HttpUtil使其具有发送http请求的功能

    /**
     * 执行创建工作空间的请求  这里是具体的业务逻辑方法
     * @param workSpace 请求的对象  要请求的url的参数
     * @param callBack 回调方法
     */
    public static void createWorkSpace(String port,WorkspaceConfig workSpace, CallbackString callBack){
       HttpPost request = new HttpPost(CheCommands.getWorkSpaceUrl(port));  //post请求,需传入请求的url
       String entity = JSON.toJSONString(workSpace);  //将实体转换成json对象
       request.setEntity(parseEntity(entity));
       executePost(request,callBack);
    }
}

5.测试

代码语言:javascript
复制
public static void mian(String[] args){
           HttpClient.createWorkSpace(port, workSpaceConfig, new CallbackString(data -> {
                System.out.println(data);
            }));
}

6.java执行远程linux命令

7.执行远程linux所需配置

zip下载链接 下载后执行以下命令

代码语言:javascript
复制
mvn install:install-file -DgroupId=com.ganymed.ssh2 "-DartifactId=ganymed-ssh2-build" "-Dversion=210" "-Dpackaging=jar"  "-Dfile=/Users/gaowenfeng/Downloads/ganymed-ssh2-build210/ganymed-ssh2-build210.jar"
最后的Dfile路径为刚刚下载的zip解压后,里面的ganymed-ssh2-build210.jar的真实路径
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.09.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.对返回结果的处理进行规范
  • 2.封装异步请求回调方法
  • 3.执行Http请求的方法封装
  • 4. 执行具体的Http请求的service类
  • 5.测试
  • 6.java执行远程linux命令
  • 7.执行远程linux所需配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档