Java KSOAP2 Web服务ilon100智能服务器
我正在尝试使用Android调用echelon smartserver的web服务。 我需要替换与Android不兼容的jax ws。我决定使用KSOAP2 我试过这种方法,但没有成功:Java KSOAP2 Web服务ilon100智能服务器,java,android,web-services,wsdl,android-ksoap2,Java,Android,Web Services,Wsdl,Android Ksoap2,我正在尝试使用Android调用echelon smartserver的web服务。 我需要替换与Android不兼容的jax ws。我决定使用KSOAP2 我试过这种方法,但没有成功: public class ConnectTest extends Activity implements OnClickListener { Button SoapButton; private static final String NAMESPACE = "http://wsdl.echelon.c
public class ConnectTest extends Activity implements OnClickListener {
Button SoapButton;
private static final String NAMESPACE = "http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/wsdl/";
private static String URL = "http://192.168.100.247/WSDL/v4.0/iLON100.wsdl";
private static final String METHOD_NAME = "List";
private static final String SOAP_ACTION = "http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/wsdl/List";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo propInfo = new PropertyInfo();
propInfo.name = "iLonItem";
request.addProperty("<xSelect>//Item[@xsi:type=\"Item_Cfg\"]</xSelect>",propInfo);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope
.getResponse();
SoapResponse = resultsRequestSOAP.toString();
System.out.println("SOAP" + SoapResponse);
} catch (Exception e)
{
Log.e("Error", "pb IO", e);
SoapResponse = "error connection";
}
return SoapResponse;
我应该如何使用SOAP更正发送下面的消息?当然可以使用KSOAP2
<List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
<iLonItem>
<xSelect>//Item[@xsi:type=\"Item_Cfg\"]</xSelect>
</iLonItem>
</List>
//Item[@xsi:type=\“Item\u Cfg\”]
请帮忙。
谢谢 我认为有两件事需要改变 首先,预期的名称空间是
”http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/“
这可以在您提供的这行代码中找到
第二,我相信你已经改变了属性。iLonItem是属性名,应该在请求中位于第一位,如下所示
request.addProperty("iLonItem","<xSelect>//Item[@xsi:type=\"Item_Cfg\"]</xSelect>" );
request.addProperty(“iLonItem”和“//Item[@xsi:type=\“Item\u Cfg\”]);
至于值,我不知道“//Item[@xsi:type=\“Item\u Cfg\”]”是什么意思,但希望它能够识别请求并执行它应该执行的操作 您知道请求结构是什么吗?它应该像我上面提到的一样。我想发送的消息(在我第一篇文章的底部)是服务器制造商提供的程序员参考指南中的一个示例。这很有帮助,我相信我发现了一些问题。让我知道它是否有效
request.addProperty("iLonItem","<xSelect>//Item[@xsi:type=\"Item_Cfg\"]</xSelect>" );