Java实现post请求(带有参数)

这篇具有很好参考价值的文章主要介绍了Java实现post请求(带有参数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

package Sort.pay;

import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;

public class Pay {
    public static void main(String[] args) {
        String url = "http://xxxxxx";//访问路径
        Random random = new Random();
        Map<String, Object> map = new HashMap<>();
        map.put("authCode", "1423009170000001");
        map.put("resource", "api.hl.order.pay.unified");
        map.put("requestTime", "20230129105758");
        map.put("versionNo", "1");
        Map<String, Object> params = new HashMap<>();
        params.put("businessOrderNo", random.nextInt(1000000000));//202105623000002
        params.put("payAmount", "90.00");
        params.put("remark", "购买山核桃20斤");
        params.put("merchantNo", "771389");
        params.put("operatorAccount", "19884151060");
        params.put("deviceNo", "402102317000001");
        params.put("notifyUrl", "http://testapi.liankok.com/notify/pay");
        params.put("payExpireTime", "600");
        params.put("limitPay", "1");
        params.put("payUrlExpireTime", "60");
        params.put("subject", "山核桃");
        params.put("goodsTag", "guolicheng");
        params.put("goodsInfo", "{\"receiptid\":\"323323\",\"costprice\":200.00,\"goodsdetail\":[{\"goodsid\":\"123123123\",\"goodsname\":\"小石头\",\"thirdgoodsid\":\"23323453\",\"quantity\":1,\"price\":5.00}]}");
        map.putAll(params);
//            map.put("params",params);
        //排序集合
        map = PaySortUtil.sortByKey(map);
        //遍历输出拼接字符串
        Set<String> keys = map.keySet();
        String str = "";
        for (String key : keys) {
            str += key + "=" + map.get(key) + "&";
        }
        str = str.toLowerCase() + "U7iIPg2x1k";
        //md5加密字符串
        String md5sr = DigestUtils.md5Hex(str);
        map.put("sign", md5sr);
        Map<String, Object> map3 = new HashMap<>();//存放结果
        //将需要比较删除的两个集合添加
        map3.putAll(map);
        map3.putAll(params);
        //for - each遍历比较且删除
        for (String a : map.keySet()) {
            if (params.containsKey(a) || params.containsValue(map.get(a))) {
                map3.remove(a);
            }
        }
        map3.put("versionNo", "1");
        map3.put("params", params);
        System.out.println(map3);

        JSONObject jsonObject=JSONObject.fromObject(map3);
        System.out.println(jsonObject.toString());

       String ss= Pay.sendPost(url,jsonObject.toString());
        System.out.println(ss);
    }


    public static String sendPost(String url,String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.err.println("发送POST请求出现异常!" + e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }

}
class PaySortUtil {
    public static Map<String, Object> sortByKey(Map<String, Object> map){
        //创建一个带有比较器的TreeMap
        Map<String, Object> treeMap = new TreeMap<>(String::compareTo);
        //将你的map传入treeMap
        treeMap.putAll(map);
        return treeMap;
    }
}

pom文件所需依赖,有些依赖不是必需的,这里没有删除文章来源地址https://www.toymoban.com/news/detail-520420.html

 <dependencies>
<!--        post请求的依赖-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>16.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>
        <!--MD5依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>maven-surefire-common</artifactId>
            <version>2.12.4</version>
        </dependency>
        <dependency>
            <groupId>org.kie.modules</groupId>
            <artifactId>org-apache-commons-httpclient</artifactId>
            <version>6.2.0.CR2</version>
            <type>pom</type>
        </dependency>

        <!-- JSONObject对象依赖的jar包 -->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ezmorph</groupId>
            <artifactId>ezmorph</artifactId>
            <version>1.0.6</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.2.3</version>
            <classifier>jdk15</classifier><!-- 指定jdk版本 -->
        </dependency>
        <!-- Json依赖架包下载 -->
    </dependencies>

    <properties>
        <maven.compiler.source>7</maven.compiler.source>
        <maven.compiler.target>7</maven.compiler.target>
    </properties>

到了这里,关于Java实现post请求(带有参数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Postman+Java springboot演示 get post put delete请求并携带(路径 路径问号后 json 表单)参数形式

    我们先创建一个java的springboot工程 在项目中 找到启动类的位置目录 在项目创建一个类 叫 user 我是想将 user 当做一个属性类的 按规范来讲 我们可以创建一个entity包 然后在下面去创建属性类 但这里 我们不想搞那么麻烦了 毕竟只是练习一下 然后 user参考代码如下 这里 只是定

    2024年02月06日
    浏览(47)
  • java.io.IOException: Stream closed,关于设置拦截器获取post请求的参数,出现的流关闭问题

    问题描述: 就是最近在做接口拦截,判断post请求提交的参数有没有敏感词。但是在处理的过程中,就遇到了java.io.IOException: Stream closed这种类型的报错,其原因就是流只能被访问一次,在拦截器那边被访问之后,流就已经被关闭了,等到controller层再获取参数的时候,就会报错

    2024年02月16日
    浏览(64)
  • 解决Post请求JSON列表参数格式报错:JSON parse error: Cannot deserialize value of type `java.util.ArrayList<x>

    今天在调试接口的时候,遇到一个问题。有一个post请求的json body参数, 然后vo里面只有两个属性,id和一个集合。 然后使用apifox调试接口的时候,发现json解析异常: 通过提示信息,可以发现是因为json结构不对导致解析不了。 我原来是这样传的,会报错: 应该给list加一层数

    2024年02月11日
    浏览(53)
  • 【JavaScript】 发送 POST 请求并带有 JSON 请求体的几种方法

     在现代的前端开发中,与后端进行数据交互是必不可少的。其中,发送 POST 请求并带有 JSON 请求体是一种常见的需求。在本文中,我们将介绍在 JavaScript 中实现这一需求的几种方法。   XMLHttpRequest 是一种传统的发送网络请求的方式。以下是一个使用 XMLHttpRequest 发送 POST 请

    2024年03月19日
    浏览(63)
  • 在java中发送post请求

    使用第三方库,如Apache HttpClient:Apache HttpClient是一个功能强大的HTTP客户端库,提供了更便捷的方式发送HTTP请求。 为了更好的构建请求体这里我写了一个用于将MapString, String转换为字符串的方法。 它遍历Map中的每个键值对,将键和值以key=value的形式拼接,并用分隔每个键值对

    2024年04月28日
    浏览(33)
  • Java中的HTTP POST请求

    Java中的HTTP POST请求 在Java中,我们经常需要使用HTTP协议进行网络通信。其中,POST请求是一种常用的方式,它允许我们向服务器发送数据并获取响应。本文将介绍如何在Java中发送HTTP POST请求,并提供相应的源代码示例。 首先,我们需要导入Java标准库中的相关类和接口。在J

    2024年02月07日
    浏览(34)
  • java调用http接口(get请求和post请求)

    1.http接口的格式如下: 图片选择失败,我只能把数据贴出来,如果有不懂的可以问我哈。 http://localhost:8881/department/getDepartmentList接口数据如下:(请求方式是GET) http://localhost:8881/department/getDataById?id=3接口数据如下:(请求方式是POST) 2.需要引入的包有: 3.实现方法如下:

    2024年02月13日
    浏览(53)
  • java中使用hutool调用get请求,post请求

    一、hutool工具包实现 1、get请求 2、post请求 二、java net实现 1、java中http协议调用get请求 2、java中https协议调用get请求

    2024年02月11日
    浏览(41)
  • java post请求怎么自定义header

     看效果 代码如下 或者

    2024年02月03日
    浏览(39)
  • Java发起Post 、Get 各种请求整合

    java发起get请求和post请求的各种情况整合。具体看代码以及注释。其中Constants.UTF8本质是指\\\"UTF-8\\\"

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包