Jersey ClientHandlerException: модуль записи тела сообщения для типа Java, класса org. json .JSONObject и типа носителя MIME, текст / xml, не найден - PullRequest
0 голосов
/ 18 февраля 2020

Я использую SOAP API, используя клиент Джерси.

Заголовок должен быть POST Авторизация: Носитель ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙ ∙∙∙∙∙ X-IBM-Client-Id: SOAPAction: тип содержимого: text / xml accept: application / json

Я написал следующий код для достижения этой цели:

@GET
    @Path("/transferFunds")
    @Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON)
    public String transferFunds() throws JSONException, IOException {

        ClientResponse responseMsg = null;

        try {
            generateToken( "client_credentials", 
                           "0146b9a4-7e99-4c83-8e9e-6049cfec55da", 
                           "N5yB3bJ4sQ5iQ2dJ7iV0wU3tW0dC3cR1cC1lY1oC3nR7mD1hR7", 
                           "ABLApis" );

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> Token Generated: " + authenticationToken );

            final ClientConfig config = new DefaultClientConfig();

            final Client client = Client.create(config);

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> Client Generated" );

            MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
            queryParams.add("SystemName", "");
            queryParams.add("RequestID", "");
            queryParams.add("TenantID", "");
            queryParams.add("CreditAccount", "");
            queryParams.add("DebitAmount", "");
            queryParams.add("MappingID", "");
            queryParams.add("Narration", "");

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> Params Generated" );

            WebResource webResource = client.resource(FUND_TRANSFER_URL);

            JSONObject requestObj = new JSONObject();           

            requestObj.put("SystemName", "");
            requestObj.put("RequestID", "");
            requestObj.put("TenantID", "");
            requestObj.put("CreditAccount", "");
            requestObj.put("DebitAmount", "");
            requestObj.put("MappingID", "");
            requestObj.put("Narration", "");

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> JSON Generated" );

             responseMsg = webResource
                        .queryParams(queryParams)
                        .header("content-type", "text/xml")
                        .header("SOAPAction", "")
                        .header("X-IBM-Client-Id", "")
                        .header("Authorization", "Bearer "+ authenticationToken)
                        .accept("application/json; charset=utf-8")
                        .post(ClientResponse.class, requestObj);

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> Posted" );

            logger.info( "FMS WEBSERVICE CLIENT LOG >>> Response Code: " + responseMsg.getStatus() );
        }
        catch (Exception e) {

            logger.info("FMS WEBSERVICE CLIENT LOG >>> Exception: " + e);

        }
        return String.valueOf(responseMsg.getStatus());
    }

Ответ будет в XML.

Теперь После выполнения этого я получаю следующее исключение:

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

Может кто-нибудь предложить исправление в мой подход?

...