#java #xml #api #soap
#java #xml #API #soap
Вопрос:
Я должен использовать SOAP api для небольшого проекта. Теперь я могу получить данные, но при попытке вставить данные, похоже, это не сработает и выдает следующую ошибку: серверу не удалось обработать запрос. —> Ссылка на объект не установлена для экземпляра объекта.
Я использую следующий ресурс soap для post-запроса: http://webapp.tcscourier.com/codapi/Service1.asmx?op=InsertData
У меня есть следующий код:
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("text/xml");
RequestBody body = RequestBody.create(mediaType, "<?xml version="1.0" encoding="utf-8"?>rn<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">rn <soap12:Body>rn <InsertData xmlns="http://202.61.51.93:6265/">rn <userName>string</userName>rn <password>string</password>rn <costCenterCode>string</costCenterCode>rn <consigneeName>string</consigneeName>rn <consigneeAddress>string</consigneeAddress>rn <consigneeMobNo>string</consigneeMobNo>rn <consigneeEmail>string</consigneeEmail>rn <originCityName>string</originCityName>rn <destinationCityName>string</destinationCityName>rn <pieces>string</pieces>rn <weight>string</weight>rn <codAmount>0.2</codAmount>rn <custRefNo>string</custRefNo>rn <productDetails>string</productDetails>rn <fragile>string</fragile>rn <services>string</services>rn <remarks>string</remarks>rn <insuranceValue>string</insuranceValue>rn </InsertData>rn </soap12:Body>rn</soap12:Envelope>");
Request request = new Request.Builder()
.url("http://webapp.tcscourier.com/codapi/Service1.asmx?op=InsertData")
.method("POST", body)
.addHeader("Content-Type", "text/xml")
.build();
try {
Response response = client.newCall(request).execute();
JSONObject xmlJSONObj = XML.toJSONObject(response.body().string());
System.out.println(xmlJSONObj.toString());
} catch (IOException e) {
e.printStackTrace();
}
Чего мне не хватает?
Ответ №1:
Пожалуйста, попробуйте добавить заголовок SOAPAction в запрос.
AddHeader(«soapaction», «http://202.61.51.93:6265/InsertData «)
Комментарии:
1. Должно быть какое-то внутреннее требование, которое мы не можем знать, не зная его. Я пробовал это с другим веб-сервисом, и это работает. Я предлагаю всем, кто ищет разъяснения по SOAP, заглянуть в Postman, а затем перейти на Java. Ценным ресурсом для меня была следующая ссылка: youtube.com/watch?v=xC4QQCQDDDk