HttpClient 发送 POST 请求
2016-05-08 18:12
495 查看
API 说明
HttpClientBuilder用于创建CloseableHttpClient实例。在 HttpClient 新的版本中, AbstractHttpClient、 AutoRetryHttpClient、 DefaultHttpClient等都被弃用了,使用HttpClientBuilder代替。
Client 代码
package com.bilfinance.core.service.impl; import java.io.IOException; import java.io.UnsupportedEncodingException; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.EntityBuilder; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.achievo.framework.exception.FrameworkException; import com.bilfinance.core.model.AsParam; import com.bilfinance.core.model.AsResult; import com.bilfinance.core.service.IAsHttpInterficeService; @Service public class AsHttpInterficeService implements IAsHttpInterficeService { private static Logger logger = LoggerFactory.getLogger(AsHttpInterficeService.class); @Override public AsResult doAsHttpMethod(AsParam asParam) throws FrameworkException { //请求内容 String content = JSONObject.fromObject((Object)asParam).toString(); logger.debug("AsParam = "+content); byte[] byte_content = null; try { byte_content = content.getBytes("UTF-8"); } catch (UnsupportedEncodingException e2) { throw new FrameworkException("请求参数字符集编码异常:Charset=UTF-8"); } //建立连接 String urlstr = "http://localhost:7070/bqjrcar/WeiXinServlet"; logger.debug("URL = "+urlstr); CloseableHttpClient client = HttpClientBuilder.create().build(); HttpPost post = new HttpPost(urlstr); post.setConfig(RequestConfig.DEFAULT); EntityBuilder enbu = EntityBuilder.create().setContentType(ContentType.APPLICATION_JSON).setContentEncoding("UTF-8").setBinary(byte_content); HttpEntity rqEntity = enbu.build(); post.setEntity(rqEntity); //执行请求 HttpResponse httprs = null; try { httprs = client.execute(post); } catch (IOException e) { throw new FrameworkException("请求失败。meg="+e.getMessage(),e); } HttpEntity rsEntity = httprs.getEntity(); logger.debug("StatusLine = "+httprs.getStatusLine()); //返回结果 AsResult result = null; if(httprs.getStatusLine().getStatusCode() != 200) throw new FrameworkException("安硕系统异常,StatusLine="+httprs.getStatusLine()); if(rsEntity==null) throw new FrameworkException("安硕保存返回空"); try { String text = EntityUtils.toString(rsEntity, "UTF-8"); logger.debug("AsResult = "+text); result = (AsResult)JSONObject.toBean(JSONObject.fromObject(text), AsResult.class); } catch (ParseException | IOException e) { throw new FrameworkException("安硕返回字符集编码异常:Charset=UTF-8"); } //关闭连接 try { client.close(); } catch (IOException e) { e.printStackTrace(); } return result; } }
Servlet 代码
package com.weixinservlet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.amarsoft.are.ARE; import net.sf.json.JSONObject; public class WeiXinServlet extends HttpServlet{ private static final long serialVersionUID = -3501685878733962236L; @Override protected void service(HttpServletRequest rq, HttpServletResponse rs) throws ServletException, IOException { AsParam param = getPostParameter(rq); AsResult result = new AsResult(); //合同保存 if(AsParam.method_saveBC.equals(param.getMethod())){ try { result = new WeiXinSaveCreditInfo().saveCreditInfo(param); result.setStatus(AsResult.status_success); } catch (Exception e) { result.setStatus(AsResult.status_failed); result.setMessage(e.getMessage()); } }else { result.setStatus(AsResult.status_failed); result.setMessage("方法名称不正确,method="+param.getMethod()); } //设置 Response rs.setContentType("text/html; charset=utf-8"); rs.setCharacterEncoding("UTF-8"); String asResult = JSONObject.fromObject(result).toString(); ARE.getLog().debug("AsResult = "+asResult); rs.getWriter().println(asResult); } /** * 获取request参数 */ private AsParam getPostParameter(HttpServletRequest request){ StringBuffer sb = new StringBuffer(); try { InputStream in = request.getInputStream(); BufferedReader breader = new BufferedReader(new InputStreamReader(in,"UTF-8")); String strTem; while((strTem=breader.readLine())!=null) sb.append(strTem); breader.close(); ARE.getLog().debug("AsParam = "+sb.toString()); JSONObject datas = JSONObject.fromObject(sb.toString()); AsParam bean = (AsParam)JSONObject.toBean(datas, AsParam.class); return bean; } catch (Exception e) { throw new RuntimeException("参数JSON格式错误!request="+sb.toString(),e); } } }
AsParam.java
package com.weixinservlet; import java.io.Serializable; import java.util.HashMap; public class AsParam implements Serializable{ private static final long serialVersionUID = 1063546577762134098L; public static final String method_saveBC = "SaveCreditInfo"; private String method; private String message; private HashMap<String, Object> data; public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public HashMap<String, Object> getData() { return data; } public void setData(HashMap<String, Object> data) { this.data = data; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
AsResult.java
package com.weixinservlet; import java.io.Serializable; import java.util.HashMap; public class AsResult implements Serializable{ private static final long serialVersionUID = -6044201397210634459L; public static final String status_success = "SUCCESS"; public static final String status_failed = "FAILED"; private String status; private String message; private HashMap<String, Object> data; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public HashMap<String, Object> getData() { return data; } public void setData(HashMap<String, Object> data) { this.data = data; } }
相关文章推荐
- 20145211 《Java程序设计》实验报告五————Java网络编程及安全实验报告
- HTTP协议详解
- 第五次实验报告 java 网络编程
- 第五次实验报告 java 网络编程
- Android Volley完全解析(二),使用Volley加载网络图片
- 5、HttpClient、多线程下载、HttpUtils
- 4. Http请求以及提交数据、图片缓存
- RST_FIN
- select_echo_server
- 2016.3.30 为什么神经网络训练很难?
- 2016.3.30 神经网络的未来发展
- 2016.3.29 其他应用深度神经网络的应用
- 2016.3.29 实际运用卷积神经网络
- 2016.3.29 一个简单的视觉化证明神经网络可以拟合任意函数
- 2016.3.28 其他的调整网络的技巧
- poll_echo_server
- 2015.4.1 网络及其存在的环境
- 2015.4.1 网络群体与市场 正关系与负关系
- basic_echo_server
- 20145326 《Java程序设计》实验五——Java网络编程及安全实验报告