Reputation: 6096
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>
Above is the Soap details.
I am new to web services so please help me.
This is what i tried
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
out put of response is
anyType{
eventID=anyType{};
weddingVenue=anyType{};
weddingDate=anyType{};
bridesName=anyType{};
groomsName=anyType{};
passwordAvailable=anyType{};
thumbnailImage=anyType{};
galleryImages=anyType{};
}
But for EventID=1 in URL it returns
<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/>
How to get above details like weddingVenue ="The Party Place" for eventID=1.
Upvotes: 1
Views: 2995
Reputation: 1820
I would suggest you to create a data class for response having :
String eventID ="";
String weddingVenue ="";
String weddingDate ="";
String bridesName ="";
String groomsName ="";
String passwordAvailable ="";
String thumbnailImage ="";
String galleryImages ="";
and lets name it MyData.After that, create a public MyData object on top of your code (above onCreate) named data.Than replace
System.out.println("No of Datas are "+response.getPropertyCount()+response);
System.out.println("No of Datas are "+response.getAttributeCount()+response);
with code that will create an object from your data class and fill the properties. Try this;
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();
After this point, you can get properties of your object by writing the required code. Note that i may have mistakes here on this code because i wrote it down just now and i don't have editor availible. Types of SOAP objects returning to me also included envelope details so main = response.getProperty(0) was a guess and hope it works. I didn't use ArrayList because service seems returning one weddins details by giving property. Hope this helps, i will try to edit and fix if i have a mistake here once i got a hand on Eclipse.
This code is taken from my project, but my envelope was different than yours. Hope it helps:
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;
}
Upvotes: 1