What is the reason why line api image map 400 error occurs? - Stack Overflow

admin2025-05-01  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 :

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", "/")
                .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", ".html");
            externalLink.put("label", "See More");
            
            JSONObject video = new JSONObject();
            video.put("originalContentUrl", ";);
            video.put("previewImageUrl", ";);
            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:

header: {"Content-Type": "application/json", "Authorization", "Bearer apikey"}

body:

{
  "baseSize": {
    "width": 1040,
    "height": 1040
  },
  "baseUrl": "/",
  "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: 
    at sun.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1900)
    at sun.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
    at sun.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.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
    at org.apache.tomcat.util.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)
转载请注明原文地址:http://anycun.com/QandA/1746095431a91600.html