405 Метод не разрешен POST, однако он разрешен

Я пытаюсь отправить POST на какой-то сервис. Внутри тела запроса есть XML. Я пытался сделать это через пользовательский интерфейс SOAP - это работает - просто поместите в данные тела текст XML. Через Jmeter - работает. через мой собственный код Java он возвращает мне 405 - метод не разрешен. Я получаю 405 в пользовательском интерфейсе Jmeter или SOAP, если только я меняю метод на GET.

Итак, вот мой код, где определенно установлен метод POST. Я понятия не имею, что случилось.

public static void main(String args[]) {
    String soapEndpointUrl = "https://some.com/test";
    callSoapBankService(soapEndpointUrl);
}

private static void callSoapBankService(String soapEndpointUrl) {
    try {

        HttpsURLConnection httpsConnection = null;
        // Open HTTPS connection
        URL url = new URL(soapEndpointUrl);
        httpsConnection = (HttpsURLConnection) url.openConnection();
        // Connect
        httpsConnection.setRequestMethod("POST");
        httpsConnection.setDoInput(true);
        httpsConnection.setDoOutput(true);
        httpsConnection.setRequestProperty("SOAPAction", "");
        httpsConnection.setRequestProperty("Connection", "keep-alive");
        httpsConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        httpsConnection.setRequestProperty("Content-Length", "397");
        httpsConnection.setRequestProperty("Host", "some.com");
        httpsConnection.setRequestProperty("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
        DataOutputStream output = new DataOutputStream(httpsConnection.getOutputStream());
            output.writeBytes("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ws=\"http://some.com/\">\n" +
                    "                <SOAP-ENV:Header/>\n" +
                    "                <SOAP-ENV:Body>\n" +
                    "                    <ws:getDocument>\n" +
                    "                        <beginDate>2018-02-09</beginDate>\n" +
                    "                        <endDate>2018-02-10</endDate>\n" +
                    "                    </ws:getDocument>\n" +
                    "                </SOAP-ENV:Body>\n" +
                    "             </SOAP-ENV:Envelope>");
         output.flush();
         output.close();
         DataInputStream input = new DataInputStream(httpsConnection.getInputStream());
         for( int c = input.read(); c != -1; c = input.read() )
         System.out.print( (char)c );
         input.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
   }

person Catherin    schedule 08.06.2018    source источник
comment
Может защита от CSRF включена?   -  person Nikolai Shevchenko    schedule 08.06.2018


Ответы (1)


Решено. Проблема была в конце этой строки:

String soapEndpointUrl = "https://some.com/test";

В URL должна быть косая черта

person Catherin    schedule 09.06.2018