XML プロトコルのみを使用するリモート API へのリクエストを作成する際に問題が発生しています。Apache CXF プロジェクトを使用して、WSDL ファイルをプロジェクトに簡単にインポートできるタイプ (.java ファイル) に解析しました。CXF では、デフォルトの引数 none が使用されていました。
KSOAP2 が受け取った型に従って XML をフォーマットする方法がわかりません。どんな助けでも大歓迎です。
ケビン
public class SOAPRequestTest {
private static final String NAMESPACE = "http://schemas.xmlsoap.org/soap/envelope/";
private static final String SERVER_HOST = "https://xx.xx.xx.xx/services/LoginService";
private static final String SERVER_METHOD = "urn:LoginService";
public void execute() {
Logger.d("--> Hello");
new Thread(new Runnable() {
@Override
public void run() {
SoapObject request = new SoapObject(NAMESPACE, SERVER_METHOD);
GetSecurityInfo getSecurityInfo = new GetSecurityInfo();
SecurityLogin securityLogin = new SecurityLogin();
securityLogin.setUserId("testUser");
securityLogin.setPassword("password");
securityLogin.setType("consumer");
securityLogin.setIP("128.2.20.181");
securityLogin.setLocale("en_US");
getSecurityInfo.setUser(securityLogin);
request.addAttribute("user", getSecurityInfo);
SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(1);
soapSerializationEnvelope.addTemplate(request);
soapSerializationEnvelope.addMapping("http://xx.xxx.xxx.xxx", "user", GetSecurityInfo.class);
HttpTransportSE httpTransportSE = new HttpTransportSE(SERVER_HOST);
httpTransportSE.debug = true;
try {
httpTransportSE.call("getSecurityInfo", soapSerializationEnvelope);
Logger.d(httpTransportSE.requestDump);
SoapObject soapObject = (SoapObject) soapSerializationEnvelope.getResponse();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}