我尝试在Android Project中使用WebService SAP(SOAP)。
我使用Android Studio和ksoap2-android-assembly-3.6.1.jar ksoap2 library
我的代码就是休闲:
public void executeSAPWebService {
String nameSapceSap = "urn:sap-com:document:sap:soap:functions:mc-style";
String urlSap = "http://localhost:8010/sap/bc/srt/rfc/sap/zconsultamtn/300/zconsultamtn/zconsultamtn";
String methosSap = "Zconsultamtn";
String soapActionSap = "urn:sap-com:document:sap:soap:functions:mc-style/Zconsultamtn";
SoapObject soapObject = new SoapObject(nameSapceSap,methosSap);
PropertyInfo propertyInfoIean = new PropertyInfo();
PropertyInfo propertyInfoImatnr = new PropertyInfo();
PropertyInfo propertyInfoIwerks = new PropertyInfo();
PropertyInfo propertyInfoUser = new PropertyInfo();
PropertyInfo propertyInfoPwd = new PropertyInfo();
propertyInfoUser.setName("username");
propertyInfoUser.setValue("MyUser");
propertyInfoUser.setType(String.class);
soapObject.addProperty(propertyInfoUser);
propertyInfoPwd.setName("password");
propertyInfoPwd.setValue("myPwd");
propertyInfoPwd.setType(String.class);
soapObject.addProperty(propertyInfoPwd);
propertyInfoIean.setName("IEan");
propertyInfoIean.setValue("75010553000075");
propertyInfoIean.setType(String.class);
soapObject.addProperty(propertyInfoIean);
propertyInfoImatnr.setName("IMatnr");
propertyInfoImatnr.setValue("");
propertyInfoImatnr.setType(String.class);
soapObject.addProperty(propertyInfoImatnr);
propertyInfoIwerks.setName("IMatnr");
propertyInfoIwerks.setValue("0236");
propertyInfoIwerks.setType(String.class);
soapObject.addProperty(propertyInfoIwerks);
PropertyInfo propertyInfoZmueble = new PropertyInfo();
PropertyInfo propertyInfoZtramo = new PropertyInfo();
PropertyInfo propertyInfoZnivel = new PropertyInfo();
propertyInfoZmueble.setName("Zmueble");
propertyInfoZmueble.setValue("");
propertyInfoZmueble.setType(String.class);
soapObject.addProperty(propertyInfoZmueble);
propertyInfoZtramo.setName("Ztramo");
propertyInfoZtramo.setValue("");
propertyInfoZtramo.setType(String.class);
soapObject.addProperty(propertyInfoZtramo);
propertyInfoZnivel.setName("Znivel");
propertyInfoZnivel.setValue("");
propertyInfoZnivel.setType(String.class);
soapObject.addProperty(propertyInfoZnivel);
SoapSerializationEnvelope envelopeSap = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelopeSap.dotNet = false;
envelopeSap.setOutputSoapObject(soapObject);
envelopeSap.headerOut = new org.kxml2.kdom.Element[1];
envelopeSap.headerOut[0] = buildAuthHeader();
HttpTransportSE httpTransportSE = new HttpTransportSE(urlSap);
List<HeaderProperty> c = new ArrayList<HeaderProperty>();
c.add(new HeaderProperty("Authorization","Basic XXXXXXXXXXXXXX"));
try {
final Object responde = httpTransportSE.call(soapActionSap,envelopeSap,c);
SoapPrimitive response = (SoapPrimitive) envelopeSap.getResponse();
} catch (Exception ex) {
ex.printStackTrace();
}
}
private org.kxml2.kdom.Element buildAuthHeader() {
org.kxml2.kdom.Element TMuebles = new org.kxml2.kdom.Element().createElement(nameSapceSap,"TMuebles");
org.kxml2.kdom.Element item = new org.kxml2.kdom.Element().createElement(nameSapceSap,"item");
org.kxml2.kdom.Element Zmueble = new org.kxml2.kdom.Element().createElement(nameSapceSap,"Zmueble");
Zmueble.addChild(Node.TEXT,"");
item.addChild(Node.ELEMENT,Zmueble);
org.kxml2.kdom.Element Ztramo = new org.kxml2.kdom.Element().createElement(nameSapceSap,"Ztramo");
Ztramo.addChild(Node.TEXT,"");
item.addChild(Node.ELEMENT,Ztramo);
org.kxml2.kdom.Element Znivel = new org.kxml2.kdom.Element().createElement(nameSapceSap,"Znivel");
Znivel.addChild(Node.TEXT,"");
item.addChild(Node.ELEMENT,Znivel);
TMuebles.addChild(Node.ELEMENT,item);
return TMuebles;
}
是否应在PropertyInfo对象中发送凭据? 在PropertyInfo对象或org.kxml2.kdom.Element中发送空结构(TMuebles)的正确方法是什么?
当我尝试使用WebService时,会出现以下异常:
06-05 17:28:37.647 27321-27426 / com.example.android.examplewebservice W / System.err:SoapFault - faultcode:&#39; soap-env:Server&#39; faultstring:&#39; Web服务处理错误;提供商端的Web服务错误日志中的更多详细信息(UTC时间戳20170605230903;事务ID 593463DC6B5809C0E1008000AC1CFA8E)&#39; faultactor:&#39; null&#39;详情:org.kxml2.kdom.Node@13a02a98
我错了什么?