用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; // 自定义错误信息
    }
}
时间: 2024-10-12 00:04:26

用IO流发送Http请求的相关文章

非阻塞IO发送http请求

import socket from urllib.parse import urlparse from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE def get_url(url): #通过socket请求html url = urlparse(url) host = url.netloc path = url.path if path == "": path = "/" #建立socket连

jmeter 发送http请求,并把获取到的请求的订单信息保存到文件中

有一个任务,需要频繁发送订单请求,并分析订单请求中有没有存在重复订单号,思路是用jmeter 发送http请求,使用正则表达式获取到订单号,并把订单号和线程号作为参数提供给java请求,在java请求中把订单号写到包括有线程号的命名文件中.完成出来的样子是这样的 步骤如下: 1.Jmeter 发送http请求 1) 新建HTTP信息头管理器 2) 新建HTTP请求 2,在下单过后返回部分信息如下:"msg":"下单成功","result":&qu

C#后台发送HTTP请求

转载自:http://www.cnblogs.com/leon719/p/4263673.html using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System; namespace KL.EDMS.Business.Report {     public class FaultCountLogic     {     

Java输入、输入、IO流 类层次关系梳理

Java输入.输入.IO流 类层次关系梳理 本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958.htm?noadapt=1 http://blog.csdn.net/hguisu/article/details/7418161 https://www.ibm.com/developerworks/cn/java/j-lo-javaio/ http:/

通过java.net.URLConnection发送HTTP请求的方法

1.GET与POST请求的区别 a) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, b) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内. 2.URLConnection的对象 a) 获取URLConnection实例 URL url = new URL(urlString); // 根据url生成urlConnection对象 urlConnection = (HttpURLConnection) url.

【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法

Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection) 2.设置请求的参数 3.发送请求 4.以输入流的形式获取返回内容 5.关闭输入流 封装请求类 1 package com.util; 2 3 import java.io.BufferedReader; 4 import java.io.IOExcept

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: 1 string strURL = "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword="; 2 strURL +=this.textBox1.Text; 3 System.Net.HttpWebRequest request; 4 // 创建一个HTTP请求 5

面试官:谈谈你对IO流和NIO的理解

一.概念 NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多.在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO. 二.NIO和IO的主要区别 下表总结了Java IO和NIO之间的主要区别: 1.面向流与面向缓冲 Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的. Java IO面向流意味着每次从流中读一个或多个字

Java IO流 探险

Java的IO流使用了一种装饰器设计模式,它将IO流分为底层节点流和上层处理流.本篇重点在如何访问文件与目录.如何以二进制格式和文本格式来读写数据.对象序列化机制.还有Java7的"NIO.2". 装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象.并基于被装饰的对象的功能,提供更强的功能. IO的方式通常分为:BIO(同步阻塞).NIO(同步非阻塞).AIO