热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Httpclient访问服务器

前端:***调用后台服务*publicstaticUpdateToolResponseBeancallService(Stringur

前端:

    /**
* 调用后台服务
*/

public static UpdateToolResponseBean callService(String url,UpdateToolRequestBean requestBean,String type) {
if (url==null||"".equals(url)) {
logger.error("callService() the url is null, return null!");
return null;
}
String re = null;
UpdateToolResponseBean respOnseBean= null;
ObjectMapper objectMapper = JacksonHelper.objectMapper();
try {
String requestJsOnStr= objectMapper.writeValueAsString(requestBean);
re = HttpConnectService.requestByHttpConn(url,requestJsonStr,type);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
logger.error("Server connection failed : "+e);
}
if (re != null) {
try {
respOnseBean= objectMapper.readValue(re, UpdateToolResponseBean.class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return responseBean;
}
public static String requestByHttpConn(String url, String reqParms, String type) throws IOException {
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);
org.apache.http.client.HttpClient httpclient = new DefaultHttpClient(httpParams);

HttpPost httppost = new HttpPost(url);
List formParams = new LinkedList();

formParams.add(new BasicNameValuePair("data", reqParms));
formParams.add(new BasicNameValuePair("type", type));

HttpEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8");

httppost.setEntity(entity);

HttpResponse respOnse= httpclient.execute(httppost);

logger.debug("statusCode is " + response.getStatusLine().getStatusCode());
HttpEntity resEntity = response.getEntity();
logger.debug("----------------------------------------");
logger.debug(response.getStatusLine());
if (resEntity != null) {
logger.debug("返回长度: " + resEntity.getContentLength());
logger.debug("返回类型: " + resEntity.getContentType());
InputStream in = resEntity.getContent();
logger.debug("in is " + in);
String inS = inputStream2String(in);
logger.debug(inS);

return inS;
}
return "";
}

private static String inputStream2String(InputStream in) throws IOException {
//这里的编码规则要与上面的相对应
BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String tempbf;
StringBuffer out = new StringBuffer(4096);
while ((tempbf = br.readLine()) != null) {
out.append(tempbf);
}
return out.toString();
}

服务器端:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String cOntent= request.getParameter(MsiConstants.KEY_DATA);
String type = request.getParameter(MsiConstants.DATA_TYPE);
try {
doAction(request, response, content, type);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}



void doAction(HttpServletRequest httprequest,HttpServletResponse httpresponse, String content, String type)
throws Exception{

UpdateToolRequest requestBean = null;
JSONObject json = JSONObject.fromObject(content.trim());
requestBean = (UpdateToolRequest) JSONObject.toBean(json, UpdateToolRequest.class);
if (logger.isDebugEnabled()) {
logger.debug(requestBean.toString());
}
setRemoteIP("["+httprequest.getRemoteAddr()+"]");
if (ConstantUtils.MSI_UPDATE_ACTIVATE.equals(type)) {
response(httpresponse.getWriter(), service.activateClient(requestBean));
}


}

public void response(PrintWriter pw, Object response) {
try {
JSONObject json = JSONObject.fromObject(response);
pw.println(json.toString());
} catch (Exception e) {
logger.error(" response exception:", e);
String re = "{'errcode':'" + -1 + "'}";
pw.println(re);
}
}

推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
Cindere丷lla_茹满
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有