Java - Тип носителя MIME, текст / xml, не найден - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь использовать SOAP API, используя Джерси в Java, у меня есть следующий код для заголовков и параметров запроса и полного вызова:

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

        System.setProperty("https.proxyHost", host);
        System.setProperty("http.proxyHost", host);
        System.setProperty("http.proxyPort", port);
        System.setProperty("https.proxyPort", port);

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

        final String API_URI = "https://221.120.211.69:443/abl-api/uat/ApiConnectFTwsdlDefinitionHttpService";

        final ClientConfig config = new DefaultClientConfig();

        final Client client = Client.create(config);

        MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
        queryParams.add("SystemName", "CDC");
        queryParams.add("RequestID", "222");
        queryParams.add("TenantID", "abc11323===+");
        queryParams.add("CreditAccount", "0010000108290010");
        queryParams.add("DebitAmount", "100");
        queryParams.add("MappingID", "Remarks");
        queryParams.add("Narration", "remarks");
        WebResource webResource = client.resource(API_URI);

        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");

        ClientResponse responseMsg = webResource
        .queryParams(queryParams)
        .header("content-type", MediaType.TEXT_XML)
        .header("accept", MediaType.APPLICATION_JSON)
        .header("SOAPAction", "http://ApiConnectFTwsdlDefinition/FundsTransfer")
        .header("X-IBM-Client-Id", "0146b9a4-7e99-4c83-8e9e-6049cfec55da")
        .header("Authorization", "Bearer "+ authCode)
        .post(ClientResponse.class, requestObj);

    //  System.out.println(responseMsg.getEntity(String.class));

        int PRETTY_PRINT_INDENT_FACTOR = 4;
        JSONObject xmlJSONObj = XML.toJSONObject(responseMsg.getEntity(String.class));
        String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
        System.out.println(jsonPrettyPrintString);

Когда я выполняю ошибку thrown: com.sun.jersey.api.client.ClientHandlerException: не был найден модуль записи тела сообщения для типа Java, класса org. json .JSONObject и мультимедийного типа MIME, text / xml.

Я знаю его показ из-за заголовка = text / xml, так как ранее я использовал application / json, и он был разрешен с использованием библиотек GSON и genson. Теперь ответ API изменился на Text / XML, но он не разрешается.

Пожалуйста, помогите.

...