java接收回调通知实现方式

Posted Biubbbbbbbbiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java接收回调通知实现方式相关的知识,希望对你有一定的参考价值。

演示POST方式发送通知信息,请求参数位于request中的body中
记录一次回调参数的对接,写起来感觉很简单,但是表达就感觉特别难
文章内容仅供参考,内容有误请及时指出纠正

回调通知示例
第三方回调通知参数,我们这边需要提供一个url,用来接收这个参数。
这次的回调参数位于request中的body中
提供的地址需要是外网地址

回调地址:http://url/test/saveNotify

controller层,进行接收回调参数
程序执行完后必须打印输出“success”(不包含引号)

package com...controller.test;

import com.service.jumi.JuMiAiService;
import com.web.BaseController;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;

@RestController
@RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class JuMiController extends BaseController

    @Autowired
    private TestService testService;
    
    @RequestMapping(value = "saveNotify", method = RequestMethod.POST)
    @ApiOperation("回调参数测试")
    public String saveNotify(HttpServletRequest request)
        try 
            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null)
                sb.append(line);
            
            String reqBody = sb.toString();
            testService.saveNotify(reqBody);
        catch (Exception e)
            e.printStackTrace();
        
        return "success";
    



service层,处理回调参数
reqBody便是第三方的回调通知参数,获取到这些参数之后便可进行其他操作处理

package com...service.test;

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class TestService 

    private Logger logger = LoggerFactory.getLogger(TestService.class);
    @Autowired
    StringRedisTemplate redisTemplate;

    /**
     * 
     * @param reqBody
     */
    public void saveNotify(String reqBody)
        logger.info("reqBody="+reqBody);
        com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);
    




以上是关于java接收回调通知实现方式的主要内容,如果未能解决你的问题,请参考以下文章

C#系列文章之事件

Java语言 通过WebSocket实现实时系统通知,以后再也不能装作没看到老板的通知了~~

Java回调机制解析

Java回调机制解析

通话期间未调用远程通知回调

Callback函数详解(我感觉,回掉函数的本质是函数指针,在业务做循环处理的时候,调用一下通知外部)