java 通过发送json,post请求,返回json数据

本文介绍了一个Java工具类HttpUtils,用于发送POST请求到指定URL,并接收响应数据。该工具类使用了slf4j日志框架进行日志记录,通过HttpURLConnection实现HTTP请求,支持JSON数据格式。

1.工具类

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

@Slf4j
public class HttpUtils {

      public static String sendPost(String param,String urls){
          StringBuffer sb=new StringBuffer();
          try{
              //创建url
              // 创建url资源
              URL url = new URL(urls);
              // 建立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 = param.getBytes();
              // 设置文件长度
              conn.setRequestProperty("Content-Length", String.valueOf(data.length));
              // 设置文件类型:
              conn.setRequestProperty("Content-Type", "application/json");
              // 开始连接请求
              conn.connect();
              OutputStream out = new DataOutputStream(conn.getOutputStream()) ;
              // 写入请求的字符串
              out.write(data);
              out.flush();
              out.close();
              // 请求返回的状态
              log.info(String.valueOf(conn.getResponseCode()));
              InputStream in;
              if(HttpURLConnection.HTTP_CREATED == conn.getResponseCode()){
                  // 请求返回的数据
                  in = conn.getInputStream();
              }else{
                  // 请求返回的错误信息
                  in = conn.getErrorStream();
              }
              try{
                  String readLine = new String();
                  BufferedReader responseReader=new BufferedReader(new InputStreamReader(in,"UTF-8"));
                  while((readLine=responseReader.readLine())!=null){
                      sb.append(readLine).append("\n");
                  }
                  responseReader.close();
              }catch (Exception e1) {
                  throw new RuntimeException(e1.getMessage());
              }
              return sb.toString();
          }catch (Exception e){
              throw new RuntimeException(e.getMessage());
          }
      }

}

2.调用

String sendResult = HttpUtils .sendPost(jsonString,url);
        // 将json字符串转化为json对象
        JSONObject resultJson = JSONObject.parseObject(sendResult);
        // 判断返回值code并处理
        if(Integer.parseInt(resultJson.get("code").toString()) == 200){
            .........................................
        }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值