Я пытаюсь отправить POST в какой-либо сервис.Внутри тела запроса есть XML.Я пытался сделать это через SOAP UI - это работает - просто поместите в данные тела текст XML.Через Jmeter - все работает.через мой собственный код Java он возвращает мне 405 - метод не разрешен.Я получу 405 в Jmeter или SOAP UI, если только я поменяю метод на 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();
}
}