private final String SOAPACTION="http://www.americanweddinggroup.com/API/PublicJSON/WeddingDetatils";
private final String URL="http://www.americanweddinggroup.com/API/PublicJSON.asmx" ;
private final String NAMESPACE="http://www.americanweddinggroup.com/API/";
private final String METHODNAME="WeddingDetatils";
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WeddingDetatils xmlns="http://www.americanweddinggroup.com/API/PublicJSON">
<EventID>string</EventID>
</WeddingDetatils>
</soap:Body>
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WeddingDetatilsResponse xmlns="http://www.americanweddinggroup.com/API/PublicJSON">
<WeddingDetatilsResult>
<eventID>string</eventID>
<weddingVenue>string</weddingVenue>
<weddingDate>string</weddingDate>
<bridesName>string</bridesName>
<groomsName>string</groomsName>
<passwordAvailable>string</passwordAvailable>
<thumbnailImage>string</thumbnailImage>
<galleryImages>
<anyType />
<anyType />
</galleryImages>
</WeddingDetatilsResult>
</WeddingDetatilsResponse>
</soap:Body>
</soap:Envelope>
以上是肥皂细节。
我是网络服务的新手,所以请帮助我。
这是我试过的
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
输出回应是
anyType{
eventID=anyType{};
weddingVenue=anyType{};
weddingDate=anyType{};
bridesName=anyType{};
groomsName=anyType{};
passwordAvailable=anyType{};
thumbnailImage=anyType{};
galleryImages=anyType{};
}
但是对于URL中的EventID = 1,它会返回
<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/>
如何获取上述详情,例如weddingVenue =“Party Place”,eventID = 1。
答案 0 :(得分:1)
我建议您为响应创建一个数据类:
String eventID ="";
String weddingVenue ="";
String weddingDate ="";
String bridesName ="";
String groomsName ="";
String passwordAvailable ="";
String thumbnailImage ="";
String galleryImages ="";
并将其命名为MyData。之后,在代码(onCreate上方)上创建名为data的公共MyData对象。替换
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();
在此之后,您可以通过编写所需的代码来获取对象的属性。请注意,这个代码我可能有错误,因为我刚刚写下来并且我没有可用的编辑器。返回给我的SOAP对象的类型还包括信封细节,因此main = response.getProperty(0)是一个猜测,希望它能正常工作。我没有使用ArrayList,因为服务似乎通过赋予属性返回一个 weddins细节。希望这会有所帮助,一旦我掌握了Eclipse,我会尝试编辑并修复我的错误。
此代码取自我的项目,但我的信封与您的不同。希望它有所帮助:
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;
}