Как разобрать REST API STREAM - PullRequest
2 голосов
/ 28 марта 2020

Я отправляю запрос на получение на сервер, и сервер возвращает следующие два ответа. Эти ответы принимаются по мере того, как событие происходит на серверах в потоках (например, id1, id2, id3, id4 ..... и т. Д.), А не в одном кадре.

Теперь мне нужно принять эти ответы один по одному и проанализируйте его, а затем сохраните объекты для дальнейшего использования.

Как мне добиться этого java 8 и пружины MVC?

id: 1
data: {"event_type":"ABC","business_call_type":"XYZ","agent_number":"nnn","call_recording":null,"number":"0000","uuid":"a","call_direction":"Outbound","caller":"+100000000000","customer_number":"+100000000000","version":"1.0","k_number":"+917303454203","type":"AGENT_CALL","unique_id":"0","call_solution":"xx","FreeSWITCH_IPv4":"11111","Event_Date_Local":"2020-03-28 11:46:47"}

id: 2
data: {"event_type":"AGENT_ANSWER","business_call_type":"Outbound","agent_number":"+1111111111","call_recording":null,"number":"+22222222","uuid":"bbbbbbbbbbbbbb","call_direction":"Outbound","caller":"+100000000000","customer_number":"+100000000000","version":"1.0","k_number":"+1111111111","type":"AGENT_ANSWER","unique_id":"bbbbbbbbbb","call_solution":"xx","FreeSWITCH_IPv4":"0.0.0.0","Event_Date_Local":"2020-03-28 11:47:00"}

1 Ответ

1 голос
/ 28 марта 2020

ниже - код, используемый для анализа json.

import java.util.HashMap;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.util.concurrent.ListenableFuture;
import org.springframework.util.concurrent.ListenableFutureCallback;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.AsyncRestTemplate;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.context.request.async.DeferredResult;

import com.psg.async_tasks.controller;
import com.psg.dao.CtiIntegrationdao;

// @Controller
@Service
public class ListningService {
    private static final Logger logger = Logger.getLogger(ListningService.class.getName());
    @Autowired
    CtiIntegrationdao daoCtiInt;

    //@RequestMapping({"list"})
    @PostConstruct
    public  void   ListningReponse() {
        HashMap<String,String> results=daoCtiInt.getKnolarity_Config();
        String endpoint;
        endpoint=results.get("30");
        endpoint=endpoint.replace("<<AUTH>>",results.get("26"));
        logger.info(endpoint);
        logger.info("============================================================================================@postconstruct=========");
        AsyncRestTemplate asyncrestTemplate = new AsyncRestTemplate();
        try {
             final DeferredResult<String> result = new DeferredResult<>();
               ListenableFuture<ResponseEntity<String>> futureEntity = asyncrestTemplate.getForEntity(endpoint, String.class);
               logger.info("IN TRY");
               logger.info(futureEntity.toString());

               futureEntity.addCallback(new ListenableFutureCallback<ResponseEntity<String>>() {
            @Override
            public void onSuccess(ResponseEntity<String> result) {
                String[] idno = result.getBody().split("\\R", 3);
                System.out.println("==================="+idno[0]);
                String responseBody =result.getBody().replaceAll("id: (\\d+)","").replace("data: ","");;
                logger.info("-----responsebody-----"+responseBody);
                logger.info("-----responsebody-----"+result.getBody());
//              logger.info("-----responsebody-----"+result.getBody().getAgent_number());
//              logger.info("-----responsebody-----"+result.getBody().getBusiness_call_type());
//              logger.info("-----responsebody-----"+result.getBody().getCall_duration());
//              logger.info("-----responsebody-----"+result.getBody().getCall_recording());
//              logger.info("-----responsebody-----"+result.getBody().getCall_solution());
//              logger.info("-----responsebody-----"+result.getBody().getCall_Type());
//              logger.info("-----responsebody-----"+result.getBody().getDestination());



            }

            @Override
            public void onFailure(Throwable ex) {
                result.setErrorResult(ex.getMessage());
                logger.info("------------Failure Block"+result.toString());

            }
               });
        }catch(HttpClientErrorException ex) {
            logger.info(ex.getMessage());           
        }catch(Exception ex) {
            ex.printStackTrace();
        }

    }
}

...