Android 如何从soap获取数据
失去反应的是Android 如何从soap获取数据,android,web-services,soap,ksoap,Android,Web Services,Soap,Ksoap,失去反应的是 SoapObject request=new SoapObject(NAMESPACE, METHODNAME); request.addProperty("EventID",1);//in soap event value is string SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=tr
SoapObject request=new SoapObject(NAMESPACE, METHODNAME);
request.addProperty("EventID",1);//in soap event value is string
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
// SoapPrimitive response1 = (SoapPrimitive) envelope.getResponse();
System.out.println("No of Datas are "+response.getPropertyCount()+response);//this returns count as 8
System.out.println("No of Datas are "+response.getAttributeCount()+response);//this returns count as 0
但是对于EventID=1,它返回
anyType{
eventID=anyType{};
weddingVenue=anyType{};
weddingDate=anyType{};
bridesName=anyType{};
groomsName=anyType{};
passwordAvailable=anyType{};
thumbnailImage=anyType{};
galleryImages=anyType{};
}
1
聚会场所
2014年4月26日上午12:00:00
我们有一些最长的名字
基思·泰斯勒
假的
如何获得eventID=1的上述详细信息,如WeddingVincement=“The Party Place”。我建议您创建一个数据类,用于响应:
<eventID>1</eventID>
<weddingVenue>The Party Place</weddingVenue>
<weddingDate>4/26/2014 12:00:00 AM</weddingDate>
<bridesName>We have some of the Longest NamesX</bridesName>
<groomsName>Keith Tessler</groomsName>
<passwordAvailable>False</passwordAvailable>
<thumbnailImage/>
<galleryImages/>
然后,在名为data的代码(上面的onCreate)的顶部创建一个公共MyData对象。然后替换
String eventID ="";
String weddingVenue ="";
String weddingDate ="";
String bridesName ="";
String groomsName ="";
String passwordAvailable ="";
String thumbnailImage ="";
String galleryImages ="";
使用将从数据类创建对象并填充属性的代码。试试这个
System.out.println("No of Datas are "+response.getPropertyCount()+response);
System.out.println("No of Datas are "+response.getAttributeCount()+response);
在此之后,您可以通过编写所需的代码来获取对象的属性。请注意,我在这段代码中可能有错误,因为我刚刚写下了它,并且没有可用的编辑器。返回给我的SOAP对象类型还包括信封详细信息,因此main=response.getProperty(0)只是一个猜测,希望它能起作用。我没有使用ArrayList,因为服务似乎通过提供属性返回了婚礼细节。希望这能有所帮助,一旦我接触到Eclipse,我将尝试编辑并修复这里的错误
这段代码取自我的项目,但我的信封与你的不同。希望有帮助:
androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
SoapObject main = (SoapObject)response.getProperty(0); //your xml style does not inclue envelope details so i guess it will require 0th property to reach table
data.eventID = main.getProperty("eventID").toString();
data.weddinVenue = main.getProperty("weddingVenue").toString();
data.weddinDate = main.getProperty("weddingDate").toString();
data.bridesName = main.getProperty("bridesName").toString();
data.groomsName = main.getProperty("groomsName").toString();
data.passwordAvailable = main.getProperty("passwordAvailable").toString();
data.galleryImage = main.getProperty("galleryImage").toString();
public ArrayList getnewheaders(){
SoapObject请求=新的SoapObject(名称空间、方法名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
HttpTransportSE HttpTransportSE=新的HttpTransportSE(URL);
httpTransportSe.debug=true;
SoapObject响应=null;
试一试{
调用(SOAP_操作,信封);
Log.i(“呼叫”、“呼叫成功”);
response=(SoapObject)envelope.getResponse();
SoapObject main=(SoapObject)response.getProperty(1);
SoapObject列表=(SoapObject)main.getProperty(0);
字符串a=Integer.toString(list.getPropertyCount());
Log.i(“财产计数”,a);
对于(int i=0;iit给出了异常java.lang.RuntimeException:非法属性:eventID你可以发布图书名称或web服务链接(使用soap)教程。非常感谢uTry更改索引,你应该找到正确的索引。它也可以是eventID的getProperty(1),婚礼地点的getProperty(2)等。
System.out.println("No of Datas are "+response.getPropertyCount()+response);
System.out.println("No of Datas are "+response.getAttributeCount()+response);
androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
SoapObject main = (SoapObject)response.getProperty(0); //your xml style does not inclue envelope details so i guess it will require 0th property to reach table
data.eventID = main.getProperty("eventID").toString();
data.weddinVenue = main.getProperty("weddingVenue").toString();
data.weddinDate = main.getProperty("weddingDate").toString();
data.bridesName = main.getProperty("bridesName").toString();
data.groomsName = main.getProperty("groomsName").toString();
data.passwordAvailable = main.getProperty("passwordAvailable").toString();
data.galleryImage = main.getProperty("galleryImage").toString();
public ArrayList<Haberler> getNewsHeaders(){
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransportSe = new HttpTransportSE(URL);
httpTransportSe.debug = true;
SoapObject response = null;
try{
httpTransportSe.call(SOAP_ACTION, envelope);
Log.i("call", "call successfull");
response = (SoapObject)envelope.getResponse();
SoapObject main = (SoapObject)response.getProperty(1);
SoapObject list = (SoapObject)main.getProperty(0);
String a = Integer.toString(list.getPropertyCount());
Log.i("property count", a);
for(int i = 0; i<list.getPropertyCount(); i++){
Haberler h = new Haberler();
SoapObject nsoap = (SoapObject)list.getProperty(i);
if(nsoap != null){
h.set_id(Integer.valueOf(nsoap.getProperty("id").toString()));
h.set_header(nsoap.getProperty("baslik").toString());
h.set_category(nsoap.getProperty("kategori").toString());
h.set_abstract(nsoap.getProperty("ozet").toString());
h.set_details(nsoap.getProperty("detay").toString());
h.set_begindate(nsoap.getProperty("bas_tarihi").toString());
h.set_enddate(nsoap.getProperty("bit_tarihi").toString());
haberler.add(h);
Log.i("eklenen haber", h.get_header());
}
}
}
catch(Exception e){
e.printStackTrace();
}
return haberler;
}