Java发送HTTP的get,post请求(JSON)

2023-11-17

import net.sf.json.JSONObject;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.IOException;

/**
 * Created by liqun.chen on 2017/5/15.
 */
public class HttpUtil {
    /**
     * json 字符串
     * @param url
     * @param param
     * @return
     */
    public static String getSerchPersion(String url,String param){
      /* 1 生成 HttpClinet 对象并设置参数 */
        HttpClient httpClient = new HttpClient();
        // 设置 Http 连接超时为5秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
      /* 2 生成 GetMethod 对象并设置参数 */
        GetMethod getMethod = new GetMethod(url);
        // 设置 get 请求超时为 5 秒
        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
        // 设置请求重试处理,用的是默认的重试处理:请求三次
        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
        String response = "";
      /* 3 执行 HTTP GET 请求 */
        try {
            int statusCode = httpClient.executeMethod(getMethod);
         /* 4 判断访问的状态码 */
            if (statusCode != HttpStatus.SC_OK) {
                System.err.println("请求出错: "+ getMethod.getStatusLine());
            }
         /* 5 处理 HTTP 响应内容 */
            // HTTP响应头部信息,这里简单打印
            Header[] headers = getMethod.getResponseHeaders();
            for (Header h : headers)
                System.out.println(h.getName() + "------------ " + h.getValue());
            // 读取 HTTP 响应内容,这里简单打印网页内容
            byte[] responseBody = getMethod.getResponseBody();// 读取为字节数组
            response = new String(responseBody, param);
            System.out.println("----------response:" + response);
            // 读取为 InputStream,在网页内容数据量大时候推荐使用
            // InputStream response = getMethod.getResponseBodyAsStream();
        } catch (HttpException e) {
            // 发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            // 发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
        } finally {
         /* 6 .释放连接 */
            getMethod.releaseConnection();
        }
        return response;
    }
    /**
     * post请求
     * @param url
     * @param json
     * @return
     */
    public static JSONObject doPost(String url,JSONObject json){
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
        JSONObject response = null;
        try {
            StringEntity s = new StringEntity(json.toString());
            s.setContentEncoding("UTF-8");
            s.setContentType("application/json");//发送json数据需要设置contentType
            post.setEntity(s);
            HttpResponse res = client.execute(post);
            if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                HttpEntity entity = res.getEntity();
                String result = EntityUtils.toString(res.getEntity());// 返回json格式:
                response = JSONObject.fromObject(result);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return response;
    }

//调用
public static void main(String arg[]) throws Exception {
        String url = "http://localhost:8080/";
        JSONObject params = new JSONObject();
        params.put("personName", "name");
        params.put("personCode", "230882xxxxxx2116");
        JSONObject param2 = new JSONObject();
        param2.put("pageNo", 1);
        param2.put("pageSize", 20);
        params.put("page", param2);
        String param = "q="+params.toString();
        //get 请求
        String ret = getSerchPersion(url, param.toString());
        System.out.println(ret);
//        JSONObject jsonResponse=JSONObject.fromObject(param);
//        JSONObject json = (JSONObject)jsonResponse.get("page");
//        System.out.println(json.get("pageSize"));

        //post 请求
        JSONObject jsonObject = doPost(url,params);
        System.out.println(jsonObject.toString());
    }


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java发送HTTP的get,post请求(JSON) 的相关文章

随机推荐

  • Git SSL certificate problem: unable to get local issuer certificate

    错误 Push failed Unable to access https github com ttsin gitTest git SSL certificate problem unable to get local issuer ce
  • Python物理数值解析

    让我们回忆一下库仑定律 来自位于 r 0 r 0 r0 处的单个点电荷 q 0 q 0
  • 自动驾驶是用Python实现的?你敢用吗?

    一 安装环境 gym是用于开发和比较强化学习算法的工具包 在python中安装gym库和其中子场景都较为简便 安装gym pip install gym 安装自动驾驶模块 这里使用Edouard Leurent发布在github上的包hig
  • eclipse汉化.设置为中文 简单好操作 java初学者看过来

    方法 1 查找语言包下载网址 并复制 2 打开eclipse 点击 help Install New Software Add 3 在 Location 中粘帖网址 点击 Add 4 勾选 简体中文包 5 等待加载完 重启 本教程操作环境
  • Kafka原理分析

    在基础篇中我们介绍MQ的一些基础原理 这篇文章 我们针对kafka进行较深入的分析 上篇文章中我们提到了kafka中一个名词broker 其实broker可以理解成为一台kafa服务器 kafka的特性和功能 在kafka设计之初是为了实时
  • Redis的安装(CentOS7)与部分配置文件的讲解

    Redis的安装 CentOS7 与部分配置文件的讲解 Redis的安装 步骤一 安装Redis依赖 下载安装最新版的gcc编译器 yum install y gcc tcl 步骤二 上传安装包并解压 1 将Redis安装包上传到 opt中
  • vue点击把某个区域变成图片数据

    前言 使用html2canvas 可以实现把某个区域变成图片的base64数据 官网入口 点我 目录 实现步骤 1 引入 npm引入 js引入 2 在需要使用的vue组件中引入 3 将制定区域内转成图片 添加ref标记 4 点击开始转换的方
  • SV--线程(mailbox)

    3 mailbox 3 1概述 线程之间如果传递信息 可以使用mailbox mailbox和队列queue有相近之处 mailbox是一个对象 因此也可以用new 来例化 例化时 有一个可选的参数size来限定其存储的最大数量 如果siz
  • Windows中zlib的安装与配置

    安装zlib所需前置条件 cmake VS 2022 其他版本也可以 cmake的安装可以看 windows中CMake的安装与配置 第一步 下载zlib库源文件 下载zlib库源文件 可以去官网下载 也可以去github下载 这里推荐Gi
  • 数据挖掘--分类算法的优缺点

    1决策树 Decision Trees 的优缺点 决策树的优点 一 决策树易于理解和解释 人们在通过解释后都有能力去理解决策树所表达的意义 二 对于决策树 数据的准备往往是简单或者是不必要的 其他的技术往往要求先把数据一般化 比如去掉多余的
  • 万向区块链元宇宙系列报告:对工业元宇宙的认知

    伴随着元宇宙概念大热 国内外多个巨头企业抢先布局 国内多个地方政府也在积极布局 发展元宇宙技术及相关产业 试图抢占先机 针对各业务场景与元宇宙的融合 万向区块链首席经济学家办公室团队出具了系列元宇宙相关研究报告 本篇将主要聚焦工业元宇宙 探
  • json和pickle的dump,dumps,load,dumps方法的使用

    序列化 Serialization 将对象的状态信息转换为便于存储或传输的形式的过程称之为序列化 该过程的逆向则称之为反序列化 如 1 数据和文本的转换 2 Python的数据类型和二进制数据类型的转化 3 Python的数据类型和json
  • 微信小程序 - 判断一个经纬度是否在一个多边形区域内

    功能描述 最近公司做了一个定位打卡的小程序 需要判断用户的经纬度是否在一个闭合的多边形区域内 在区域内允许打卡 否则提示 不再打卡范围 由于腾讯地图小程序SDK没有提供相关功能 所以需要自己手写造轮子 实现思路 首先已知一个用户坐标 x0
  • python函数式编程例子-python之面向过程,函数式编程,面向对象浅析

    python编程有面向过程 面向函数 面向对象三种 那么他们区别在哪呢 这个问题 让我想起我在学习编程的时候 我的老师给我举的例子 分享给大家 面向过程就是将编程当成是做一件事 要按步骤完成 比如煮咖啡这件事 先拿一定量的咖啡豆 然后磨成粉
  • Vue----双向绑定指令

    文章目录 3 7 双向绑定指令 3 7 1 v model 指令的修饰符 3 7 双向绑定指令 vue提供了 v model双向绑定指令 用来辅助开发者在 不操作DOM 的前提下 快速 获取表单数 据
  • 使用idea自带的maven插件配置镜像

    一 选择idea自带maven路径 setting文件的位置选择 二 打开setting文件 三 修改maven的镜像
  • 华为HCIE云计算之Fusion Access桌面云

    华为HCIE云计算之Fusion Access桌面云 一 Fusion Access介绍 二 华为Fusion Access架构 1 Fusion Access桌面云解决方案逻辑架构 2 FusionSphere云平台架构 三 Fusion
  • 【无人机分配】一种无人机实时最优任务分配模型附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像
  • 不能看到共享的服务器文件夹,服务器不能共享文件夹

    服务器不能共享文件夹 内容精选 换一换 VPC为弹性云服务器构建隔离的 用户自主配置和管理的虚拟网络环境 提升用户云中资源的安全性 简化用户的网络部署 使用弹性文件服务时 文件系统和云服务器归属于同一VPC下才能文件共享 VPC可以通过网络
  • Java发送HTTP的get,post请求(JSON)

    import net sf json JSONObject import org apache commons httpclient import org apache commons httpclient methods GetMetho