http调用方法

package com.cntaiping.pension.bmp.pay.utils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

@Component
public class HttpRequstEgpUtil {

    private static Log log = LogFactory.getLog(HttpRequstEgpUtil.class);
   
    /**
     * @author lvyk
     * @param urlParem
     * @param obj
     * @return
     * @throws Exception
     */
    public String postRequest4Egp(String urlParem, String obj) throws Exception {
        String resultInfo = null;
        log.info("进入postSelfHelp---obj:" + obj);
        // 创建url资源
        URL url = new URL(urlParem);
        // 建立http连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置允许输出
        conn.setDoOutput(true);
        conn.setDoInput(true);
        // 设置不用缓存
        // conn.setUseCaches(false);
        // 设置传递方式
        conn.setRequestMethod("POST");
        // 设置维持长连接
        conn.setRequestProperty("Connection", "Keep-Alive");
        // 设置文件字符集:
        conn.setRequestProperty("Charset", "UTF-8");
        // 转换为字节数组
        byte[] data = (obj.toString()).getBytes();
        // 设置文件长度
        conn.setRequestProperty("Content-Length", String.valueOf(data.length));
        // 设置文件类型:
        conn.setRequestProperty("contentType", "application/json");
        // 开始连接请求
        // conn.connect();
        OutputStream out = conn.getOutputStream();
        // 写入请求的字符串
        out.write((obj.toString()).getBytes());
        out.flush();
        out.close();
        log.info("postSelfHelp返回响应代码:" + conn.getResponseCode());

        // 请求返回的状态
        if (conn.getResponseCode() == 200) {
            log.info("postSelfHelp响应成功!");
            // 请求返回的数据
            InputStream in = conn.getInputStream();
            BufferedReader reader = null;
            reader = new BufferedReader(new InputStreamReader(in));
            // //获得请求数据之后关闭连接
            while ((resultInfo = reader.readLine()) != null) {
                log.info("postSelfHelp响应结果信息:" + resultInfo);
                return resultInfo;
            }
//            try {//这里为什么不用这种方式,因为这里响应参数长的时候,我这个写法发现没有拿到完整的响应参数(具体原因是因为这里的字节数限制了),
//            只拿到一部分,所以改用了上面的写法;当然也可对如下写法进行改造,具体详细自己去研究,在这里就不详述了
//                byte[] data1 = new byte[in.available()];
//                in.read(data1);
//                // 转成字符串
//                resultInfo = new String(data1,"UTF-8");
//                log.info("postSelfHelp响应结果信息:" + resultInfo);
//            } catch (Exception e1) {
//                e1.printStackTrace();
//            }
           /* read(byte[])方法不会去清空缓冲区数组,亦会导致相应信息过长,没有圈读出来的情况,既然每次不会去清空缓冲区数组内容,可通过读取长度来append字符串*/
                 /*byte[] buf = new byte[1024];
                 StringBuffer sb = new StringBuffer();
                 int len = 0;
                 try {
                         while ((len=in.read(buf)) != -1) {
                                 sb.append(new String(buf, 0, len, "utf-8"));
                             }
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 return sb.toString();*/
        }
        return resultInfo;
    }

}


 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值