Я использую 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, не найден
Может кто-нибудь предложить исправление в мой подход?