public interface INetResult<T> {
void getNetData(T data) ;
}
/**
* 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() {
}
}
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;
}
}
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);
}
}
public static void mian(String[] args){
HttpClient.createWorkSpace(port, workSpaceConfig, new CallbackString(data -> {
System.out.println(data);
}));
}
zip下载链接 下载后执行以下命令
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的真实路径