0

我正在尝试使用 PATCH 方法对 Groovy 脚本进行 HTTP 操作。如果我使用 Postman Interface 执行该请求,我会获得 200 ok,但是当我使用 Groovy 脚本时,我会获得 405 错误代码。邮递员请求: 邮递员请求

该请求是针对带有 JSON 数据的 Groovy 进行的。

处理请求的函数是下一个:


public Object sendHttpRequest(String url, String operation, String jsdonData,
            String user, String password) throws Exception {
        println("Start sendHttpRequest() method");

        Object gesdenResponse = null;
        HttpURLConnection conn = null;

        try {
            println("Opening HTTP connection...");
            println("URL: " + url);

            URL obj = new URL(url);
            conn = (HttpURLConnection) obj.openConnection();

            conn.setRequestProperty("Authorization", String.format("Basic %s", getProtectedCredentials(user, password)));
            println("Header \"Authorization: *****\" set up");

            String method = null;
            switch (operation) {
                case "PASSWORD":
                    method = 'PATCH';
                    println("PASSWORD Operation");
                    break;

                default:
                    break;
            }

                        if (method?.equals("PUT") || method?.equals("POST") ||method?.equals("PATCH")) (conn.setDoOutput(true));

            if (method == "PATCH") {
                 println("MODIFICAMOS CABECERA PARA PATCH ");
                 conn.setRequestProperty("X-HTTP-Method-Override", "PATCH");
                                 conn.setRequestMethod("POST");
            } else {
                     conn.setRequestMethod(method);
            }

            println("Setting up custom HTTP headers...");
        conn.setRequestProperty(GesdenConstants.HTTP_CUSTOM_HEADER_SYSTEM_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_SYSTEM_VALUE);
            println(String.format("Custom header \"%s: %s\" set up", GesdenConstants.HTTP_CUSTOM_HEADER_SYSTEM_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_SYSTEM_VALUE));
            conn.setRequestProperty(GesdenConstants.HTTP_CUSTOM_HEADER_ACCEPT_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_ACCEPT_VALUE);
            println(String.format("Custom header \"%s: %s\" set up", GesdenConstants.HTTP_CUSTOM_HEADER_ACCEPT_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_ACCEPT_VALUE));
            conn.setRequestProperty(GesdenConstants.HTTP_CUSTOM_HEADER_CONTENT_TYPE_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_CONTENT_TYPE_VALUE);
            println(String.format("Custom header \"%s: %s\" set up", GesdenConstants.HTTP_CUSTOM_HEADER_CONTENT_TYPE_KEY, GesdenConstants.HTTP_CUSTOM_HEADER_CONTENT_TYPE_VALUE));

            if (jsdonData != null && !jsdonData.isEmpty()) {
                conn.setRequestProperty("Content-Length", String.format("%s", Integer.toString(jsdonData.getBytes().length)));
                conn.getOutputStream().write(jsdonData.getBytes("UTF-8"));
                println(String.format("JSON data set up" + conn));
            }

            println("Waiting for server response...");
            println(String.format("conn es "+conn));

            BufferedReader input = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer data = new StringBuffer();
      println(String.format("linea " +inputLine));
            while ((inputLine = input.readLine()) != null)
            {
                data.append(inputLine);
                println(String.format("linea " +inputLine));
            }

        } catch (Exception e) {
            throw e;

        } finally {
            if (conn != null) {
                conn.disconnect();
                println("HTTP connection closed");
            }

            println("Finish sendHttpRequest() method");
        }

        return gesdenResponse;
    }

代码日志如下:

2019-08-30 10:18:07.981  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : ***** SET PASSWORD started ******
2019-08-30 10:18:08.579  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : Show me the url: http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.586  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Start toJSON() method
2019-08-30 10:18:08.589  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Finish toJSON() method
2019-08-30 10:18:08.589  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : El cuerpo del JSON es: {"password":"Pabloarevalo11"}
2019-08-30 10:18:08.589  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : ***** SET PASSWORD antes del response ******
2019-08-30 10:18:08.592  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Start sendHttpRequest() method
2019-08-30 10:18:08.592  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Opening HTTP connection...
2019-08-30 10:18:08.592  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : URL: http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.594  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Header "Authorization: *****" set up
2019-08-30 10:18:08.594  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : PASSWORD Operation
2019-08-30 10:18:08.594  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Method: PATCH
2019-08-30 10:18:08.595  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : MODIFICAMOS LAS CABECERAS PARA PATCH
2019-08-30 10:18:08.595  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Setting up custom HTTP headers...
2019-08-30 10:18:08.595  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Custom header "Sistema: Sanitas" set up
2019-08-30 10:18:08.595  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Custom header "Accept: application/json" set up
2019-08-30 10:18:08.595  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Custom header "Content-Type: application/json" set up
2019-08-30 10:18:08.596  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : JSON data set upsun.net.www.protocol.http.HttpURLConnection:http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.596  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Waiting for server response...
2019-08-30 10:18:08.596  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : conn es sun.net.www.protocol.http.HttpURLConnection:http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.598  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Ha llegado Server returned HTTP response code: 405 for URL: http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.598  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : HTTP connection closed
2019-08-30 10:18:08.598  INFO 22051 --- [    container-1] c.groovy.gesden.common.ConnectorUtils    : Finish sendHttpRequest() method
2019-08-30 10:18:08.598  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : An exception ocurred while setting the password for user popen070: Server returned HTTP response code: 405 for URL: http://10.4.8.107:8080/ServiceGesdenScim-1.0/Users/popen070/password
2019-08-30 10:18:08.598  INFO 22051 --- [    container-1] c.g.gesden.ResetPasswordScriptConnector  : ****** SET PASSWORD finished ******


4

0 回答 0