当前位置: 首页 > news >正文

JAVA利用HttpClient进行POST请求(HTTPS)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

JAVA利用HttpClient进行POST请求(HTTPS)

下面代码在 jeecg框架里面测试通过了,需要导入的包,请自行补充

package net.leeyi.util;

import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.log4j.Logger;

import java.util.Arrays;
import java.net.URL;
import java.io.IOException;

public class JhttpClient {
    private static final Logger logger = Logger.getLogger(JhttpClient.class);

    public static JSONObject get(String url, String path, NameValuePair[] params) {
        return request(url, path, params, "get");
    }

    public static JSONObject post(String url, String path, NameValuePair[] params) {
        return request(url, path, params, "post");
    }

    private static JSONObject request(String url, String path,  NameValuePair[] params, String type) {

        JSONObject jsonObject = new JSONObject();
        try {
            URL urlObj = new URL(url);

            String protocol = urlObj.getProtocol();
            String host = urlObj.getHost();
            Integer port = urlObj.getPort();
            String urlpath = urlObj.getPath().replaceAll("//", "");

            if (protocol.equals("https") && port.equals(-1)) {
                port = 443;
            } else if (protocol.equals("http") && port.equals(-1)) {
                port = 80;
            }

            // 处理path
            Integer urlpath_len = urlpath.length();
            if (urlpath_len>0 && urlpath.substring(urlpath_len-1, urlpath_len).equals("/")) {
                urlpath = urlpath.substring(0, urlpath_len-1);
            }
            if (urlpath_len>1) {
                path = urlpath + path;
            }

            // System.out.println(protocol);
            // System.out.println(host);
            // System.out.println(port);
            // System.out.println(path);
            try {
                HttpClient httpClient = new HttpClient();
                httpClient.getHostConfiguration().setHost(host, port, protocol);
                HttpMethod method;
                String response;

                switch (type.toLowerCase()) {
                    case "get":
                        method = getMethod(path, params);
                        httpClient.executeMethod(method);
                        response = method.getResponseBodyAsString();
                        jsonObject = JSONObject.fromObject(response);
                        break;
                    case "post":
                        method = postMethod(path, params);
                        httpClient.executeMethod(method);
                        response = method.getResponseBodyAsString();
                        //System.out.println(response);
                        logger.info("This is post debug message.");
                        logger.info(response);
                        jsonObject = JSONObject.fromObject(response);
                        break;
                    default:
                        jsonObject.put("status", 500);
                        jsonObject.put("message", "非法URL");
                        break;
                }

                return jsonObject;
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (Exception e) {
            System.out.println("Exception");
            System.out.println(e);
            jsonObject.put("message", e);
        }
        jsonObject.put("status", 500);
        return jsonObject;
    }

    private static HttpMethod getMethod(String url, NameValuePair[] params) throws IOException{
        String param_str = "";
        for(NameValuePair kv: params) {
            param_str += kv.getName()+"="+kv.getValue()+"&";
        }
        GetMethod get = new GetMethod(url+"?"+param_str);
        get.releaseConnection();
        return get;
    }

    private static HttpMethod postMethod(String url,NameValuePair[] params) throws IOException{
        PostMethod post = new PostMethod(url);
        post.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
        post.setRequestBody(params);
        post.releaseConnection();
        return post;
    }

    public static void main(String[] args,NameValuePair[] param) {
        NameValuePair[] param
        JSONObject response =  post("https://api.leeyi.net","/malls/user_balance");
        System.out.println(response.get("data"));
    }

}

转载于:https://my.oschina.net/leeyisoft/blog/883709

相关文章:

  • 关于terracotta在tomcat集群中做session共享的问题
  • JAVA生成微信JSSDK接口签名
  • 工作总结-发送修改数据的请求时,修改数据成功,但是报非安全https请求,响应失败...
  • 陈松松:一个视频如何获得不同视频网站的排名秘诀
  • [译]自主权身份简介
  • [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱
  • Linux程序接口实验:取进程标志及用户信息
  • SHELL编程练习-批量创建删除用户和组
  • angular学习第一篇-----环境搭建
  • 回溯算法入门及经典案例剖析(初学者必备宝典)
  • Linux系统的LOG日志文件及入侵后日志的清除
  • C# int? 关键字
  • 4-机器学习启蒙- 聚类和相似度模型
  • 1.2—Spring项目快速搭建—2.基于Spring Tool Suite搭建
  • “box-shadow”属性(转)
  • .pyc 想到的一些问题
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【译】理解JavaScript:new 关键字
  • 08.Android之View事件问题
  • 2017-09-12 前端日报
  • CentOS6 编译安装 redis-3.2.3
  • CentOS从零开始部署Nodejs项目
  • CODING 缺陷管理功能正式开始公测
  • CSS魔法堂:Absolute Positioning就这个样
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java 网络编程(2):UDP 的使用
  • Java-详解HashMap
  • java中具有继承关系的类及其对象初始化顺序
  • js数组之filter
  • nfs客户端进程变D,延伸linux的lock
  • react-native 安卓真机环境搭建
  • Spark学习笔记之相关记录
  • Spring Cloud中负载均衡器概览
  • Vue 2.3、2.4 知识点小结
  • Windows Containers 大冒险: 容器网络
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 聊一聊前端的监控
  • 浅谈Golang中select的用法
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 详解移动APP与web APP的区别
  • 小而合理的前端理论:rscss和rsjs
  • Linux权限管理(week1_day5)--技术流ken
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • $forceUpdate()函数
  • (C语言)fread与fwrite详解
  • (NSDate) 时间 (time )比较
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (力扣)1314.矩阵区域和
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)h264中avc和flv数据的解析