OutputStream 输出流,用来write写的,把数据写进入
如果是文件输出流,结果就是把数据写入文件
如果是HttpURLConnection输出流,结果就是把数据写入http发送数据

InputStream 输入流,用来read读取的,把数据读出来
如果是文件输入流,结果就是把数据从文件中读取到字节、字符数组中
如果是HttpURLConnection输入流,结果就是读取数据接收http数据

字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。
字节流通常用于处理二进制数据,不支持直接读写字符;字符流通常用于处理文本数据
在读写文件需要对文本内容进行处理:按行处理、比较特定字符的时候一般会选择字符流;仅仅读写文件,不处理内容,一般选择字节流
https://ww.cnblogs.com/liangbaolong/p/12880487.html

 

 

从目标文件或资源读取
URL u = new URL(url);
UrlResource ur = new UrlResource(u);               
输入读:
InputStream in = ur.getInputStream(); //字节输入流 例如从url资源获取
FileInputStream in = new FileInputStream(new File("D:/test.txt")); 文件输入流(字节流)
FileReader fr = new FileReader(new File("D:/test.txt")); 文件输入流(字符流)
InputStreamReader isr = new InputStreamReader(in,"gbk"); 字符输入流
Reader read = new BufferedReader(isr);  字符输入流
输出写:
OutputStream outStream = response.getOutputStream(); 字节输出流  例如从http响应获取
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 字节输出流
FileOutputStream fos = new FileOutputStream(file); 文件输出流 (字节流)
FileWriter fw = new FileWriter(new File("D:/test2.txt")); 文件输出流 (字符流)
OutputStreamWriter out = new OutputStreamWriter(fos); 字符输出流
Writer wr = new BufferedWriter(out); 字符输出流
字节流:
while((i=in.read(b))>=0){//从输入流读取到字节数组  i是返回的读到b的字节个数 返回-1表示已读完
   bao.write(b);//字节数组写入输出流
   b = new byte[1024];
}
字符流:
while((c= read.read(ch))>=0){ //从输入流读取字符数组
 //out.write(ch,0, c); //字符数组写入输出流
 wr.write(ch);
 ch = new char[5];
}
wr.flush();
wr.close();
 
操作字符流涉及字符编码,字节流不涉及
基于字节流的stream:
DataOutputStream----DataInputStream:
FileOutputStream-----FileInputStream:
基于字符流的stream(典型的以write和reader来标识的):
FileWriter---FileReader:
StringWriter---StringReader:
BufferedWriter--BufferedReader

 

https服务器搭建
https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/papay/chapter2_7.shtml

    public static void main(String[] args) {
//传入null请求接收方会报错
        String s1 = httpReq("http://localhost:9098/insurance/insuranceAward/insuranceSport2.json?userId=123&policyNo=321","123xxxxxxmmmmmmm");
        System.out.println("result:"+s1);
    }

    @RequestMapping(value = "/insuranceSport2")
    @ResponseBody
    public ResultVO<String> test2(@Valid MyRequest request, HttpServletRequest req, HttpServletResponse res,@RequestBody String jsonString) {
        ResultVO rs = new ResultVO();
        System.out.println(request);
        System.out.println(jsonString);
        return rs;
    }

    public static String httpReq(String url, String params) {
        StringBuffer bufferRes = new StringBuffer();
        HttpURLConnection conn = null;
        InputStream in = null;
        try {
            URL realUrl = new URL(url);
            conn = (HttpURLConnection) realUrl
                    .openConnection();
// 连接超时
            conn.setConnectTimeout(30000);
// 读取超时 --服务器响应比较慢,增大时间
            conn.setReadTimeout(30000);
            HttpURLConnection.setFollowRedirects(true);
// 请求方式
            conn.setRequestMethod("GET");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            if (StringUtils.isNotBlank(params)) {
                conn.setRequestProperty("CONTENT_LENGTH","" + params.length());
            }
//	conn.setRequestProperty("Accept-Charset", "UTF-8");
            conn.setRequestProperty("User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");
            conn.setRequestProperty("Referer", "https://api.weixin.qq.com/");

// 发送请求参数
            if (params != null) {
                OutputStream out = conn.getOutputStream();
                out.write(params.getBytes("UTF-8"));
                out.flush();
                out.close();
                out = null;
            }
//接收返回
             public static void main(String[] args) {
//传入null请求接收方会报错
        String s1 = httpReq("http://localhost:9098/insurance/insuranceAward/insuranceSport2.json?userId=123&policyNo=321","123xxxxxxmmmmmmm");
        System.out.println("result:"+s1);
    }

    @RequestMapping(value = "/insuranceSport2")
    @ResponseBody
    public ResultVO<String> test2(@Valid MyRequest request, HttpServletRequest req, HttpServletResponse res,@RequestBody String jsonString) {
        ResultVO rs = new ResultVO();
        System.out.println(request);
        System.out.println(jsonString);
        return rs;
    }

    public static String httpReq(String url, String params) {
        StringBuffer bufferRes = new StringBuffer();
        HttpURLConnection conn = null;
        InputStream in = null;
        try {
            URL realUrl = new URL(url);
            conn = (HttpURLConnection) realUrl
                    .openConnection();
// 连接超时
            conn.setConnectTimeout(30000);
// 读取超时 --服务器响应比较慢,增大时间
            conn.setReadTimeout(30000);
            HttpURLConnection.setFollowRedirects(true);
// 请求方式
            conn.setRequestMethod("GET");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            if (StringUtils.isNotBlank(params)) {
                conn.setRequestProperty("CONTENT_LENGTH","" + params.length());
            }
//	conn.setRequestProperty("Accept-Charset", "UTF-8");
            conn.setRequestProperty("User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");
            conn.setRequestProperty("Referer", "https://api.weixin.qq.com/");

// 发送请求参数
            if (params != null) {
                OutputStream out = conn.getOutputStream();
                out.write(params.getBytes("UTF-8"));
                out.flush();
                out.close();
                out = null;
            }
//接收返回
            in = conn.getInputStream();
            BufferedReader read = new BufferedReader(new InputStreamReader(in,"UTF-8"));
            String valueString = null;
            while ((valueString = read.readLine()) != null) {
                bufferRes.append(valueString);
            }
            in.close();
            read.close();
            in = null;
            read = null;
            if (conn != null) {
                conn.disconnect();
            }
        } catch (Exception e) {
            LOGGER.error("http请求微信服务异常", e);
        } finally{
            conn = null;
            in = null;
        }
        return bufferRes.toString();
    }   in = conn.getInputStream();
            BufferedReader read = new BufferedReader(new InputStreamReader(in,"UTF-8"));
            String valueString = null;
            while ((valueString = read.readLine()) != null) {
                bufferRes.append(valueString);
            }
            in.close();
            read.close();
            in = null;
            read = null;
            if (conn != null) {
                conn.disconnect();
            }
        } catch (Exception e) {
            LOGGER.error("http请求微信服务异常", e);
        } finally{
            conn = null;
            in = null;
        }
        return bufferRes.toString();
    }

 

 

 

 

    // https 
    public static String httpRequest(String requestUrl, String outputStr) {
        StringBuffer buffer = new StringBuffer();
        try {
            TrustManager[] tm = { new TrustAnyTrustManager() };
            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());

            SSLSocketFactory ssf = sslContext.getSocketFactory();

            URL url = new URL(requestUrl);
            HttpsURLConnection httpUrlConn = (HttpsURLConnection) url
                    .openConnection();
            httpUrlConn.setSSLSocketFactory(ssf);
            httpUrlConn.setDoOutput(true);
            httpUrlConn.setDoInput(true);
            httpUrlConn.setUseCaches(false);

// 设置请求方式(GET/POST)
            httpUrlConn.setRequestMethod("POST");

            if (null != outputStr) {
                OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }
// 将返回的输入流转换成字符串
            InputStream inputStream = httpUrlConn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(
                    inputStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(
                    inputStreamReader);
            String str = null;
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            bufferedReader.close();
            inputStreamReader.close();
// 释放资源
            inputStream.close();
            inputStream = null;
            httpUrlConn.disconnect();
            return buffer.toString();
        } catch (Exception e) {
            LOGGER.error("WeixinHttpUtil-->httpRequest error"+e.getMessage(),e);
        }
        return "";
    }