Reputation: 1
I am currently developing the Image Map API among the Line APIs. We are sending the request message below. Only the same 400 error is occurring. Can anyone tell me what kind of error it is? thank you
API guide url : https://developers.line.biz/en/reference/messaging-api/#imagemap-message
my code:
URL urlPath = null;
HttpURLConnection conn = null;
OutputStream outputStream = null;
BufferedReader in = null;
BufferedWriter bw = null;
JSONObject data = null;
JSONArray areasArr = null;
JSONObject boundsObj = null;
JSONObject actionObj = null;
JSONObject sizeObj = null;
JSONObject dataObj = null;
String[] richMenuText = { "a", "b", "c", "d", "e", "f" };
String[] displayTextArr = null;
int[] yLatitudeArr = { 0, 0, 0, 521, 521, 521 };
int[] xLongitudeArr = { 0, 346, 692, 0, 346, 692 };
int[] widthArr = { 346, 346, 347, 346, 346, 347 };
int height = 520;
String richMenuId = null;
String lang = null;
try {
urlPath = new URL(url + "message/push");
conn = (HttpURLConnection) urlPath.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Bearer " + token);
// ========= Start create JSON body ===========
lang = "ko";
sizeObj = new JSONObject();
sizeObj.put("width", 800).put("height", 540);
JSONObject baseSize = new JSONObject();
baseSize.put("width", 1040)
.put("height", 1040);
data = new JSONObject();
data.put("type", "imagemap")
.put("baseUrl", "https://e8j.storyof.co.kr/upload/help/")
.put("altText", "test")
.put("baseSize", baseSize);
areasArr = new JSONArray();
for (int i = 0; i < 6; i++) {
boundsObj = new JSONObject();
boundsObj.put("y", yLatitudeArr[i]).put("x", xLongitudeArr[i]).put("width", widthArr[i]).put("height", height);
System.out.println(displayTextArr);
actionObj = new JSONObject();
actionObj.put("type", "message")
.put("text", richMenuText[i]);
dataObj = new JSONObject();
actionObj.put("area", boundsObj);
areasArr.put(actionObj);
}
JSONObject area = new JSONObject();
area.put("x", 0);
area.put("y", 0);
area.put("width", 1040);
area.put("height", 585);
JSONObject externalLink = new JSONObject();
externalLink.put("linkUri", "https://example.com/see_more.html");
externalLink.put("label", "See More");
JSONObject video = new JSONObject();
video.put("originalContentUrl", "https://testurl.com");
video.put("previewImageUrl", "https://testurl.com");
video.put("area", area);
video.put("externalLink", externalLink);
data.put("actions", areasArr);
log.debug("data: "+ data);
// ========= end create JSON body =============
// ======= response Read =======
conn.setDoOutput(true);
outputStream = conn.getOutputStream();
bw = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
bw.write(data.toString());
bw.flush();
bw.close();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
=============== request ===============
API name: Imagemap message
url: https://api.line.me/v2/bot/message/push
header: {"Content-Type": "application/json", "Authorization", "Bearer apikey"}
body:
{
"baseSize": {
"width": 1040,
"height": 1040
},
"baseUrl": "https://testURL.do/test/",
"altText": "test",
"type": "imagemap",
"actions": [
{
"area": {
"x": 0,
"width": 346,
"y": 0,
"height": 520
},
"text": "a",
"type": "message"
},
{
"area": {
"x": 346,
"width": 346,
"y": 0,
"height": 520
},
"text": "b",
"type": "message"
},
{
"area": {
"x": 692,
"width": 347,
"y": 0,
"height": 520
},
"text": "c",
"type": "message"
},
{
"area": {
"x": 0,
"width": 346,
"y": 521,
"height": 520
},
"text": "d",
"type": "message"
},
{
"area": {
"x": 346,
"width": 346,
"y": 521,
"height": 520
},
"text": "e",
"type": "message"
},
{
"area": {
"x": 692,
"width": 347,
"y": 521,
"height": 520
},
"text": "f",
"type": "message"
}
]
}
The error message is as follows:
java.io.IOException: Server returned HTTP response code: 400 for URL: https://api.line.me/v2/bot/message/push
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1900)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
at line.LineAPI.imageMapMesage(LineAPI.java:412)
at telegrambot.telegramController.test(telegramController.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at egovframework.rte.ptl.mvc.filter.HTMLTagFilter.doFilter(HTMLTagFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:388)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:936)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.lang.Thread.run(Thread.java:748)
Upvotes: 0
Views: 14