Java实现不同系统使用http post请求发送json数据和接收

摘要

本篇文章我带大家使用Java代码来实现不同系统使用http post请求发送json数据和另一个系统怎么接收数据进行处理,其实想要简单的实现不难,我这边的业务需要是需要将系统A中的数据发送到系统B中,系统B接收传递过来的数据进行同步。注意我这边两个系统都是本公司系统,如果是发送数据给第三方或接受第三方发送数据也可以根据需求进行修改即可。注意该项目是SSH项目框架,不同框架需要注意系统域名地址拦截。有需要的伙伴可以参考和借鉴。

实现

Java代码:

1. 系统A中创建HttpUtil工具类发送json数据:

package com.weixin.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSONObject;
import com.hontek.comm.util.UPostMethod;

public class HttpUtil {

	private static Logger logger = Logger.getLogger(HttpUtil.class);  
	private final static int CONNECT_TIMEOUT = 5000; // in milliseconds
    private final static String DEFAULT_ENCODING = "UTF-8";
    
    public static String postData(String urlStr, String data){
        return postData(urlStr, data, null);
    }
    
   /**
     *发送post请求
     * @Author yang
     * @param urlStr:请求URL
     * @param data:请求数据
     * @param contentType:编码类型
     * @Date   2021/07/19 10:37
     **/
	public static String postData(String urlStr, String data, String contentType){
		BufferedReader reader = null;
        try {
            URL url = new URL(urlStr);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            conn.setConnectTimeout(CONNECT_TIMEOUT);
            conn.setReadTimeout(CONNECT_TIMEOUT);
            if(contentType != null)
                conn.setRequestProperty("content-type", contentType);
            OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), DEFAULT_ENCODING);
            if(data == null)
                data = "";
            writer.write(data); 
            writer.flush();
            writer.close();  

            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), DEFAULT_ENCODING));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                sb.append("\r\n");
            }
            return sb.toString();
        } catch (IOException e) {
            logger.error("Error connecting to " + urlStr + ": " + e.getMessage());
        } finally {
            try {
                if (reader != null)
                    reader.close();
            } catch (IOException e) {
            }
        }
        return null;
    }
}

2. 系统B中也需要创建HttpUtil工具类接受json数据:

package com.weixin.util;

import java.io.BufferedReader;
import java.io.IOException;

import com.alibaba.fastjson.JSON;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletRequest;

public class HttpUtil {

    /**
     * 返回request对象
     * @return
     * @Description:
     */
    protected HttpServletRequest getRequest () {
        return ServletActionContext.getRequest ();
    }

    /**
     * 接收json数据
     * @Author yang
     * @Date   2021/07/19 16:39
     **/
    public JSONObject receiveData(){
        BufferedReader br = null;
        net.sf.json.JSONObject oj = null;
        try {
            br = getRequest().getReader();
            String str = "";
            String listString = "";
            while ((str = br.readLine()) != null) {
                listString += str;
            }
            oj = JSONObject.fromObject(JSON.parseObject(listString));
            System.out.println(oj);
            System.out.println(oj.isEmpty());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)
                    br.close();
            } catch (IOException e) {
            }
        }
        return oj;
    }
	
}

3. 调用实例:

/**
	 * 同步合格证数据
	 * @Author yang
	 * @Date   2021/07/09 10:17
	 **/
	public void addSyncCertificateData(){
		JSONObject res = new JSONObject();	//使用JSONObject.put返回code
		JSONObject oj = receiveData();
		logger.info(oj.toString());
		if(!oj.isEmpty()){
			String msg = certificateServiceInter.addSyncCertificate(oj,getRequest());
			res.put("code", Integer.valueOf(msg));
		}
		printJsonString(res.toString());
	}

注意:系统A发送数据后需要接受数据处理后的状态码是否成功,示例如下:

在这里插入图片描述
4. 域名拦截配置示例:
在这里插入图片描述

欢迎小伙伴留言评论,需要完整代码的加我QQ:450938667

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想知道如何使用PHP接收JSON POST数据,下面是一个简单的示例代码: ```php <?php // 获取POST请求中的JSON数据 $json = file_get_contents('php://input'); // 将JSON数据转换为PHP数组 $data = json_decode($json, true); // 打印PHP数组 print_r($data); ?> ``` 在上面的代码中,我们首先使用`file_get_contents()`函数从`php://input`中获取POST请求中的JSON数据,然后使用`json_decode()`函数将JSON数据转换为PHP数组,最后使用`print_r()`函数打印PHP数组。 如果您想要在接收POST请求后返回JSON数据,可以使用如下代码: ```php <?php // 获取POST请求中的JSON数据 $json = file_get_contents('php://input'); // 将JSON数据转换为PHP数组 $data = json_decode($json, true); // 创建一个包含返回数据的PHP数组 $response = array( 'status' => 'success', 'message' => 'Received JSON data successfully!', 'data' => $data ); // 将PHP数组转换为JSON字符串 $json_response = json_encode($response); // 设置HTTP响应头 header('Content-Type: application/json'); // 输出JSON字符串 echo $json_response; ?> ``` 在上面的代码中,我们首先使用`file_get_contents()`函数从`php://input`中获取POST请求中的JSON数据,然后使用`json_decode()`函数将JSON数据转换为PHP数组,接着创建一个包含返回数据的PHP数组,然后使用`json_encode()`函数将PHP数组转换为JSON字符串,最后设置HTTP响应头并输出JSON字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值