Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定响应实体长度_Java_Spring_Exception - Fatal编程技术网

Java 确定响应实体长度

Java 确定响应实体长度,java,spring,exception,Java,Spring,Exception,在这里,我调用api来填充它上面的特定数据,我使用HTTPPOST请求JPA,我遇到了一些问题,有时响应太大值太大,不适合列,我做了一个小的查找来检查响应大小,但我的问题是每次查找都会从响应体的长度进行检查, 一旦它抛出,有没有办法用Exception处理它 @SpringBootApplication public class AutoDialerApplication implements CommandLineRunner { private static final Logge

在这里,我调用api来填充它上面的特定数据,我使用
HTTPPOST
请求
JPA
,我遇到了一些问题,有时响应太大
值太大,不适合列
,我做了一个小的查找来检查响应大小,但我的问题是每次查找都会从响应体的长度进行检查, 一旦它抛出,有没有办法用Exception处理它

@SpringBootApplication
public class AutoDialerApplication implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(AutoDialerApplication.class);
    @Autowired

    private Bulk_repositoryRepository bulk_repositoryRepository;


    public static void main(String[] args) {
        SpringApplication.run(AutoDialerApplication.class);
    }

    @Override
    public void run(String... args) throws Exception {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        headers.setBasicAuth("user", "pass");

        while(true) {
            //Convert to Oracle Date Format
            SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date currentDate = new Date();
            String strDate = sdfDate.format(currentDate);
            // dateTwoDaysAgo..
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DATE, -3);
            Date dateTwoDaysAgo = cal.getTime();

            logger.info("Just Started"); 
            for (Bulk_repository churnss : bulk_repositoryRepository.findAllByStatusAndCampTypeAndCampStartDateBetween(0,2,dateTwoDaysAgo,currentDate)) {
                System.out.print(churnss);
                logger.info(churnss.toString());
                BulkAutoDialer AddOffer = new BulkAutoDialer(strDate,"1", churnss.getParam1(),churnss.getMsisdn());

                logger.info(AddOffer.toString());
                HttpEntity<BulkAutoDialer> entity = new HttpEntity<BulkAutoDialer>(AddOffer,headers);

                ResponseEntity<String> responseEntity = restTemplate.exchange(
                        "https ...", HttpMethod.POST, entity, String.class);

                if(responseEntity.getStatusCode() == HttpStatus.OK){
                    String response = responseEntity.getBody();
                    System.out.println(response);
                    if(responseEntity.getBody().length() < 3 ) {
                    churnss.setFulfilment_status(response);
                    }else {
                        churnss.setFulfilment_status(" \"-10\" ");
                    }
                    churnss.setStatus(1);
                    churnss.setProcessDate(new Date());
                    logger.info(churnss.toString() + ", Response: " + response);
                    bulk_repositoryRepository.save(churnss);
                }else {
                    logger.warn("Record Id: " + churnss.getId() + ", Http Failed Response: " + responseEntity.getStatusCode());
                }
            }
            Thread.sleep(1000);
        }
    }

}
@springboot应用程序
公共类AutoDialerApplication实现CommandLineRunner{
私有静态最终记录器Logger=LoggerFactory.getLogger(AutoDialerApplication.class);
@自动连线
专用批量存储库批量存储库;
公共静态void main(字符串[]args){
run(AutoDialerApplication.class);
}
@凌驾
公共无效运行(字符串…参数)引发异常{
RestTemplate RestTemplate=新RestTemplate();
HttpHeaders=新的HttpHeaders();
setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
标题。设置为“用户”、“通过”;
while(true){
//转换为Oracle日期格式
SimpleDataFormat sdfDate=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);
日期currentDate=新日期();
字符串strDate=sdfDate.format(currentDate);
//dateTwoDaysAgo。。
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DATE,-3);
Date dateTwoDaysAgo=cal.getTime();
logger.info(“刚开始”);
对于(Bulk_repository churss:Bulk_repository repository.FindAllByStatus和CampTypeandCampStartDate介于(0,2,dateTwoDaysAgo,currentDate)){
系统输出打印(搅动);
logger.info(chursss.toString());
BulkAutoDialer AddOffer=新的BulkAutoDialer(strDate,“1”,chursss.getParam1(),chursss.getMsisdn());
logger.info(AddOffer.toString());
HttpEntity=新的HttpEntity(添加报价,标题);
ResponseEntity ResponseEntity=restTemplate.exchange(
“https…”,HttpMethod.POST,entity,String.class);
if(responseEntity.getStatusCode()==HttpStatus.OK){
字符串响应=responseEntity.getBody();
System.out.println(响应);
if(responseEntity.getBody().length()<3){
用户状态(响应);
}否则{
状态(“\”-10\”);
}
塞斯塔特斯(1);
setProcessDate(新日期());
logger.info(chursss.toString()+”,Response:“+Response);
批量存储库。保存(CROUNSS);
}否则{
logger.warn(“记录Id:+trusss.getId()+”,Http失败响应:+responseEntity.getStatusCode());
}
}
睡眠(1000);
}
}
}
这是我的loopkup:

if(responseEntity.getStatusCode() == HttpStatus.OK){
  String response = responseEntity.getBody();
  System.out.println(response);
  if(responseEntity.getBody().length() < 3 ) {
  churnss.setFulfilment_status(response);
 }else {
 churnss.setFulfilment_status(" \"-10\" ");
                        }
 churnss.setStatus(1);
 churnss.setProcessDate(new Date());
 logger.info(churnss.toString() + ", Response: " + response);
 bulk_repositoryRepository.save(churnss);
if(responseEntity.getStatusCode()==HttpStatus.OK){
字符串响应=responseEntity.getBody();
System.out.println(响应);
if(responseEntity.getBody().length()<3){
用户状态(响应);
}否则{
状态(“\”-10\”);
}
塞斯塔特斯(1);
setProcessDate(新日期());
logger.info(chursss.toString()+”,Response:“+Response);
批量存储库。保存(CROUNSS);

您混淆了不相关的内容。“值对于列来说太大”与HTTP响应的大小无关。这是一个来自数据库的错误,它告诉您,您试图保存的值对于该列的定义长度来说太大(例如,10个字符长)(例如:varchar(9)).是的,我从根目录处理这个问题,但在这里我做了一个查找来检查身体反应,是否有任何方法可以在抛出时实现为Exception而不使用if station进行查找?抱歉,但我不明白你想说什么。@NikolanAsad我想我知道你的意思。你应该知道你列的最大大小。所以你可以n立即用responseEntity.getHeader(“Content length”)>MAX\u COLUMN\u SIZE\u OF the\u COLUMN或通过检查返回字符串的长度来检查它。@JBNizet,我只想为
'if(responseEntity.getBody().length()<3)创建一个异常处理程序{..
不是使用每次从响应实体体检查的正常if语句,我认为在抛出带有检查的正常exoption时,请原谅我的英语,亲爱的,你混淆了不相关的东西。“值对于列来说太大”与HTTP响应的大小无关。这是一个来自数据库的错误,告诉您试图保存的值对于该列的定义长度来说太大(例如,10个字符长)(例如:varchar(9)).是的,我从根目录处理这个问题,但在这里我做了一个查找来检查身体反应,是否有任何方法可以在抛出时实现为Exception而不使用if station进行查找?抱歉,但我不明白你想说什么。@NikolanAsad我想我知道你的意思。你应该知道你列的最大大小。所以你可以n立即用responseEntity.getHeader(“Content length”)>MAX\u COLUMN\u SIZE\u OF the\u COLUMN或通过检查返回字符串的长度来检查它。@JBNizet,我只想为
'if(responseEntity.getBody().length()<3)创建一个异常处理程序{..
不是使用每次从响应实体体检查的正常if语句,我认为正常的exception和check一旦抛出,对不起,亲爱的