Я довольно новичок в этом вызове Webservice SOAP / WSDL, прежде чем весь этот проект использует REST Webservice. После большого количества учебников и примеров я пытаюсь вызвать веб-службу файлов SOAP / WSDL в моем проекте Android, но когда я вызываю logCat, выдается ошибка, как показано ниже:
Ошибка LogCat:
2019-01-11 10:37:22.304 28676-28799/com.example.alhaadia.obsintructor
D/test: URL = http://13.76.153.12/OBS/MessageBroker.svc?wsdl
2019-01-11 10:37:22.304 28676-28799/com.example.alhaadia.obsintructor
D/test: request= HelloWorld{}
2019-01-11 10:37:22.308 28676-28799/com.example.alhaadia.obsintructor
D/NetworkSecurityConfig: No Network Security Config specified, using
platform default
2019-01-11 10:37:22.330 28676-28799/com.example.alhaadia.obsintructor
D/test: Error - org.ksoap2.transport.HttpResponseException: HTTP request
failed, HTTP status: 404
2019-01-11 10:37:22.331 28676-28799/com.example.alhaadia.obsintructor
W/System.err: org.ksoap2.transport.HttpResponseException: HTTP request
failed, HTTP status: 404
2019-01-11 10:37:22.331 28676-28799/com.example.alhaadia.obsintructor
W/System.err: at
org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:235)
2019-01-11 10:37:22.331 28676-28799/com.example.alhaadia.obsintructor
W/System.err: at
org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
2019-01-11 10:37:22.331 28676-28799/com.example.alhaadia.obsintructor
W/System.err: at
org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
2019-01-11 10:37:22.331 28676-28799/com.example.alhaadia.obsintructor
W/System.err: at
com.example.alhaadia.obsintructor.MainActivity$4.run(MainActivity.java:311)
Я знаю, что ошибка 404 означает, что, возможно, ссылка, которую я использую, неверна, но есть ли где-нибудь еще, что я делаю здесь неправильно. Это мое NAMESPACE, ACTIONNAME, URL, METHODNAME правильно?
Это мой файл WSDL,
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
name="MessageBroker" targetNamespace="http://tempuri.org/">
<link type="text/css" id="dark-mode" rel="stylesheet" href=""/>
<style type="text/css" id="dark-mode-custom-style"/>
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://13.76.153.12/OBS/MessageBroker.svc?
xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://13.76.153.12/OBS/MessageBroker.svc?
xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="http://13.76.153.12/OBS/MessageBroker.svc?
xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/MapLocation"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="IMessageBroker_HelloWorld_InputMessage">
<wsdl:part name="parameters" element="tns:HelloWorld"/>
</wsdl:message>
<wsdl:message name="IMessageBroker_HelloWorld_OutputMessage">
<wsdl:part name="parameters" element="tns:HelloWorldResponse"/>
</wsdl:message>
<wsdl:portType name="IMessageBroker">
<wsdl:operation name="HelloWorld">
<wsdl:input wsaw:Action="http://tempuri.org/IMessageBroker/HelloWorld"
message="tns:IMessageBroker_HelloWorld_InputMessage"/>
<wsdl:output
wsaw:Action="http://tempuri.org/IMessageBroker/HelloWorldResponse"
message="tns:IMessageBroker_HelloWorld_OutputMessage"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
Так что в моем проекте Android я звоню так:
String SOAP_ACTION = "http://tempuri.org/IMessageBroker/HelloWorld";
String METHOD_NAME = "HelloWorld";
String NAMESPACE = "http://tempuri.org/";
String URL = "http://13.76.153.12/OBS/MessageBroker.svc?wsdl";
try {
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
SoapSerializationEnvelope soapSerializationEnvelope
= new SoapSerializationEnvelope(SoapEnvelope.VER12);
soapSerializationEnvelope.dotNet = true;
Log.d("test", "URL = " + URL);
Log.d("test", "request= " + request.toString());
soapSerializationEnvelope.setOutputSoapObject(request);
HttpTransportSE transportSE = newHttpTransportSE(URL);
transportSE.debug = true;
transportSE.call(SOAP_ACTION,
soapSerializationEnvelope);
String result = soapSerializationEnvelope.getResponse().toString();
MyProperties.showLogD("wsdl", "login: " + result);
Log.i("Success", "calculate: " + result);
} catch (Throwable e) {
Log.d("test", "Error - " + e.toString());
e.printStackTrace();
}
Мой премьер-министр сказал, что этот API все еще находится в разработке, но третья часть сказала, что он может получить доступ к этому методу HelloWorld по этой ссылке: http://13.76.153.12/OBS/MessageBroker.svc/HelloWorld. Это то, что меня смущает, почему он может получить доступ к методу HelloWorld по этой ссылке, как он получает эту ссылку, есть в файле WSDL? , Когда я пытаюсь с SOAPUi, метод запроса ничего не показывает.
Теперь я хочу знать, почему это происходит, потому что WSDL находится в разработке, но почему тестировщик (третье лицо) может увидеть результат для hello world, как он это делает. И, пожалуйста, проверьте, правильно ли указаны мои NAMESPACE, ACTIONNAME, URL, METHODNAME? Заранее спасибо.
Примечание: теперь никто не может мне помочь, я единственный разработчик Android здесь и сейчас.