[Error_Log] Unexpected character (<) at position 0 관련 에러 발생
본문 바로가기
IT 이야기/JBoss EAP

[Error_Log] Unexpected character (<) at position 0 관련 에러 발생

by 찬찬이 아빠 2020. 10. 23.
반응형

JBoss EAP 에러 로그에서 아래와 같이 Unexpected character (<) at position 0 에러가 발생하였습니다.

12:34:56,789	ERROR	[main.service.impl.MainServiceImpl] (org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3) error ocurred!: Unexpected character (<) at position 0.
	at org.json.simple.parser.Yylex.yylex(Yylex.java:610) [json-simple-1.1.1.jar:]
    at org.json.simple.parserJSONParser.nextToken(JSONParser.java:269) [json-simple-1.1.1.jar:]
    at org.json.simple.parserJSONParser.parse(JSONParser.java:118) [json-simple-1.1.1.jar:]
    at org.json.simple.parserJSONParser.parse(JSONParser.java:81) [json-simple-1.1.1.jar:]
    at org.json.simple.parserJSONParser.parse(JSONParser.java:75) [json-simple-1.1.1.jar:]
    at main.service.impl.MainServiceImpl.weatherBatch(MainServiceImpl.java:155) [classes:]
    at sun.reflect.GeneratedMethodAccessor289.invoke(Unknown Source) [:1.9.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_212]
... 생략 ...

 

해당 에러는 JSONObject를 파싱할 때 response를 그대로 넣으면 json 바디 뿐만 아니라 헤더 등이 같이 들어가서 발생하는 오류일 가능성이 높습니다.

시작이 {"channel"... 이 아니고 <200 OK, {"channel"... 로 시작하기 때문에 발생하는 오류입니다.

Unexpected character (<) at position 0을 피하는 예시는 아래와 같습니다.

HttpEntity entity = new HttpEntity(header);
ResponseEntiry<String>response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
JSONParse parser = new JSONParser();

JSONObject obj = (JSONObject) parser.parse(response);
→ JSONObject obj = (JSONObject) parser.parse(response.getBody());
반응형

댓글