How to call a web service that returns an arrayList in android?
I want to retrieve an arrayList from the web service in my android activity. The following code doesn't work:
How to solve tha error? When I tried this way, res is null!public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
System.out.println("qqqqqqqqqqq");
setContentView(R.layout.second);
Button submit = (Button) findViewById(R.id.b01);
submit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
EditText txt = (EditText) findViewById(R.id.editText1);
String text = txt.toString();
SoapObject request = new SoapObject(Name_Space, Method_Name);
PropertyInfo pi1 = new PropertyInfo();
pi1.setName("shopId");
pi1.setValue(text);
request.addProperty(pi1);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
System.out.println("Hellooooooooooo66666666666666");
androidHttpTransport.call(Soap_Action, envelope);
SoapPrimitive res = (SoapPrimitive) envelope.getResponse();
System.out.println("Result SP " + res);
ArrayList<Discount> result = (ArrayList<Discount>) envelope.getResponse();
Toast.makeText(getApplicationContext(), "Hi", Toast.LENGTH_SHORT).show();
System.out.println("Result in getResult() : " + res);
System.out.println("Traversing ArrayList in forward direction ");
if (res != null)
{
for (Discount ds : result)
{
discou开发者_如何学Gont = ds;
}
}
else
{
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
}
Toast.makeText(getApplicationContext(), envelope.getResponse().toString(), Toast.LENGTH_SHORT)
.show();
Toast.makeText(getApplicationContext(), discount.getProductName(), Toast.LENGTH_SHORT).show();
System.out.println("Size 1111 " + result.size());
} catch (NullPointerException e)
{
e.printStackTrace();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
Thanks,
SnehaI am not able to figure out on arrayList.
But i am able to call a WS that returns an array of objects which can then be converted to an arrayKList as follows:
try{
System.out.println("Hellooooooooooo66666666666666");
androidHttpTransport.call(Soap_Action, envelope);
SoapObject result=(SoapObject)envelope.bodyIn;
System.out.println("value of result " + result);
System.out.println("Count " + result.getPropertyCount());
System.out.println("Prop 1 " + result.getProperty(0));
System.out.println("A list b4 :; " + arrayList);
Discount discount=null;
if(result!=null) {
for(int i=0;i<result.getPropertyCount();i++){
discount=new Discount((SoapObject)result.getProperty(i));
Toast.makeText(getApplicationContext(),"Hi",Toast.LENGTH_SHORT).show();
System.out.println("is result null????????????"+result);
arrayList.add(discount);
System.out.println("Array ::::::::: " + arrayList);
}
}
for (Discount d : arrayList) {
System.out.println(d);
System.out.println("Array List Prod Name " + d.getProductName());
System.out.println("Array List Prod id" + d.getProductId());
System.out.println("Array List shop id " + d.getShopId());
System.out.println("Array List discount " + d.getDiscount());
}
}catch(NullPointerException e){
e.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}
Also you have to create a bean class 'Discount' which implements KvmSerializable of KSOAP2.
Regards,
Sneha
精彩评论