java实现Http post(参数json格式)、get 请求的HttpUtil工具类

记录一下自己在项目中需要用到的Http post请求将一个json格式的字符串传到第三方接口中,该接口需获取到传入的字符串,并进行解析。

根据如下链接获取到工具类,并进行一些修改后,使其能在自己的项目中成功使用。
https://blog.csdn.net/zhuchenglin830/article/details/90436748
https://blog.csdn.net/badao_liumang_qizhi/article/details/88760587

自己修改后的工具类代码如下:

package com.bosssoft.handler;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;

public class HttpRequestUtil {
    
    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,请求参数应该是Json格式字符串的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String jsonData) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            HttpClient client = new HttpClient(); // 客户端实例化
            PostMethod postMethod = new PostMethod(url); // 请求方法post,可以将请求路径传入构造参数中
            postMethod.addRequestHeader("Content-type", "application/json; charset=utf-8");
            byte[] requestBytes = jsonData.getBytes("utf-8"); // 将参数转为二进制流
            InputStream inputStream = new ByteArrayInputStream(requestBytes, 0,
                    requestBytes.length);
            RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
                    requestBytes.length, "application/json; charset=utf-8"); // 请求体
            postMethod.setRequestEntity(requestEntity);   // 将参数放入请求体

            int i = client.executeMethod(postMethod);  // 执行方法
            System.out.println("请求状态"+i); 
            // 这里因该有判断的,根据请求状态判断请求是否成功,然后根据第三方接口返回的数据格式,解析出我们需要的数据
            
            byte[] responseBody = postMethod.getResponseBody(); // 得到相应数据
            String s = new String(responseBody);
            System.out.println(s);
        } catch (Exception e) {
            System.out.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;
    }
}

网上的工具类一般都是可以成功发送值,而我在写程序时,最大的坑就是如何在接口中获取到值,接口获取值的方法如下,记录一下,防止下次踩坑。

image.png

红色部分的注解一定要加!二者缺一不可

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容