Использование службы SOAP с использованием метода RestTemplate (POST) 405 Метод Не допускается - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь использовать soap сервис из Spring RestTemplate в Java. Я добавил несколько заголовков и параметров запроса и отправил его в метод PostForEntity, но его метод 405 не разрешен .

Я знаю причину, по которой сервер принимает этот вызов как GET, однако он может быть только почтовым. Я пытался изменить свои заголовки и изменил мою просьбу, но ничего не достигнуто. Кто-нибудь может подсказать, что не так с моим подходом / кодом?


        String host = "172.18.101.2";
        String port = "80";

        System.out.println("Using proxy: " + host + ":" + port);
        System.setProperty("https.proxyHost", host);
        System.setProperty("https.proxyPort", port);

        SSLUtilities.trustAllHostnames();
        SSLUtilities.trustAllHttpsCertificates();

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.TEXT_XML);
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("SOAPAction", "http://ApiConnectFTwsdlDefinition/FundsTransfer");
        headers.add("X-IBM-Client-Id", "0146b9a4-7e99-4c83-8e9e-6049cfec55da");
        headers.add("Authorization", "Bearer AAIkMDE0NmI5YTQtN2U5OS00YzgzLThlOWUtNjA0OWNmZWM1NWRhV8EJd7oTPaijRicPTNxSH_h21meA_4h3Ty_QDOoXXRPC2f_MLk0BLBx4Q0DWZMHTfwTwur3BaiiF7y9uFcCkkj8fuTGK_yujrtuRY-4AZMK8hRPSppw3HhKYR84R9c9Wy9j6czOKqUklfLO6Zgb19A");

        MultivaluedMap body = new MultivaluedHashMap();     

        JSONObject requestObj = new JSONObject();           

        requestObj.put("SystemName", "CDC");
        requestObj.put("RequestID", "222");
        requestObj.put("TenantID", "abc11323===+");
        requestObj.put("CreditAccount", "0010000108290010");
        requestObj.put("DebitAmount", "100");
        requestObj.put("MappingID", "Remarks");
        requestObj.put("Narration", "remarks");

        body.add("data", requestObj.toString());

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.postForEntity("https://221.120.211.69:443/abl-api/uat/ApiConnectFTwsdlDefinitionHttpService?wsdl", requestObj.toString(), String.class);

        System.out.println("Status Code >>> " + response.getStatusCode());

1 Ответ

0 голосов
/ 11 февраля 2020

Не используйте RestTemplate для потребления SOAP Сервисов, используйте пружину клиент веб-сервисов

...