用IO流发送Http请求
Posted wangchuanfu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用IO流发送Http请求相关的知识,希望对你有一定的参考价值。
package com.j1.mai.action; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.j1.base.type.MsgStatus; import com.j1.mai.model.common.SoaApiBaseAction; import com.j1.mai.util.PropertyConfigurer; import com.j1.soa.common.DateUtils; import com.j1.soa.common.Md5Util; @Controller @Scope("request") @RequestMapping("/storeConsumptionLogin") public class StoreLoginAction extends SoaApiBaseAction { // final static String url ="http://localhost:8080/httpServer/c_i/common_i"; static Logger LOG = Logger.getLogger(StoreLoginAction.class); @RequestMapping("/login") public Object loginStoreConsumption( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "empName", required = true) String empName,// 用户名 @RequestParam(value = "loginPassWd", required = true) String loginPassWd// 密码 ) { /** * 调用接口 */ Map<String, Object> mapRes = new HashMap<String, Object>(); // 读取配置文件 String promoteUrl =(String)PropertyConfigurer.getString("storeConsumptiondLoginUrl"); String message = null; JSONObject jsonObject = null; message = httpSend(promoteUrl, empName, loginPassWd); try { // 解析json字符串 message = message.replaceAll("\\\\", ""); String jsonStr = message.substring(message.indexOf("[") + 1, message.indexOf("]")); jsonObject = JSONObject.fromObject(jsonStr); String responseCode = jsonObject.getString("msg"); if (responseCode.equals("用户名或密码错误")) { mapRes.put("status", 1); mapRes.put("msg", "loginFalse"); } else { mapRes.put("status", 0); mapRes.put("msg", "ok"); } } catch (Exception e) { e.printStackTrace(); } finally { /** *将操作的个人信息存在Session中,传给前台 *以便于在前台在录入会员的时候传递到后台 */ //操作人名称 String empNameAdd=jsonObject.getString("empName"); //操作门店名称 String deptNameAdd=jsonObject.getString("deptName"); //门店编码 String deptNo=jsonObject.getString("deptNo"); //登录名 String loginName=jsonObject.getString("loginName"); //操作人ID String empId=jsonObject.getString("empId"); request.getSession().setAttribute("empNameAdd", empNameAdd); request.getSession().setAttribute("deptNameAdd", deptNameAdd); request.getSession().setAttribute("deptNo",deptNo ); request.getSession().setAttribute("empId", empId); request.getSession().setAttribute("loginName", loginName); // this.write(request, response); } JSON o=(JSON) com.alibaba.fastjson.JSONObject.toJSON(mapRes); System.out.println("查看=============="+o); return com.alibaba.fastjson.JSONObject.toJSON(mapRes); } /** * 发送HTTP请求 * * @param url * @param propsMap * 发送的参数 */ public String httpSend(String promoteUrl, String empName, String loginPassWd) { StringBuffer buffer = new StringBuffer(); String responseContent = null; try { URL url_new = new URL(promoteUrl);// 创建连接 HttpURLConnection connection = (HttpURLConnection) url_new .openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true); connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式 connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式 connection.connect(); // POST请求 DataOutputStream out = new DataOutputStream( connection.getOutputStream()); // utf-8编码 ; String sign = null; String time = DateUtils.longToDateAll(System.currentTimeMillis()); String token = "91A1643059824847938125BA0AC0F557"; // token 不产于传送 String format = "json"; // 传送方式 String method = "queryTbl_Employee";// 调用方法 String sessionKey = "123456789078945";// sessionkey String up_date = time;// 上传日期 yyyy-mm-dd String version = "1.0.2";// 版本号 try { sign = Md5Util.Bit32(format + method + sessionKey + token + up_date + version); } catch (Exception e1) { e1.printStackTrace(); } JSONObject obj = new JSONObject(); obj.element("sessionKey", sessionKey); obj.element("method", method); obj.element("format", format); obj.element("up_Date", time); obj.element("sign", sign); obj.element("version", version); JSONObject objbusinessdate = new JSONObject(); objbusinessdate.element("username", empName);// username , objbusinessdate.element("password", loginPassWd); // password obj.element("businessData", objbusinessdate); System.out.println(obj.toString()); out.writeBytes(obj.toString()); out.flush(); // 读取响应 int length = (int) connection.getContentLength();// 获取长度 System.out.println("length:" + length); if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { System.out.println("网络错误异常!!!!"); } InputStream in = connection.getInputStream(); BufferedReader rds = new BufferedReader(new InputStreamReader(in, "UTF-8")); String tempLine = rds.readLine(); StringBuffer tempStr = new StringBuffer(); if (tempLine != null) { tempStr.append(tempLine); tempLine = rds.readLine(); } responseContent = tempStr.toString(); // BufferedReader rd = new BufferedReader(new InputStreamReader( // connection.getInputStream(), "UTF-8")); // while( (responseMsg = rd.readLine())!=null){ // buffer.append(responseMsg); // // } out.close(); rds.close(); connection.disconnect(); System.out.println(" Buffer============= " + buffer.toString()); return responseContent; } catch (IOException e) { e.printStackTrace(); } // return buffer.toString(); // 自定义错误信息 return responseContent; // 自定义错误信息 } }
以上是关于用IO流发送Http请求的主要内容,如果未能解决你的问题,请参考以下文章
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段
Java生成二进制文件与Postman以二进制流的形式发送请求