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