如何从Android应用程序中使用asmx web服务,它返回Android应用程序中的对象?

时间:2013-01-23 08:37:38

标签: java android web-services asmx

我是Android开发新手,从Android应用程序调用asmx web服务时遇到了一些问题。

我使用以下代码从我的Android应用程序调用asmx webservices。

                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy); 

        SoapObject request=new SoapObject(NAMESPACE,Method_Name);

        PropertyInfo p=new PropertyInfo();
        p.setName("Item");
        p.setValue(itm);
        p.setType(itm.getClass());
        request.addProperty(p);

           SoapSerializationEnvelope envelope=new  SoapSerializationEnvelope               (SoapEnvelope.VER12);
        envelope.dotNet=true;
        envelope.setOutputSoapObject(request);
        envelope.addMapping(NAMESPACE, "ItemById",new Item().getClass());
        HttpTransportSE androidTSE=new HttpTransportSE(URL);

        androidTSE.call(Soap_Action, envelope);
        SoapObject response=(SoapObject) envelope.getResponse();
        itm.ItemId=Integer.parseInt(response.getProperty(0).toString());
        itm.Itemname=response.getProperty(1).toString();
        Log.i("ItemName",itm.Itemname);
        tv.setText(itm.Itemname);

当我调用该服务时,我将Itemname设为0.但应用程序在我的dotNET应用程序中运行得非常愉快。

可能是什么问题?如何知道连接是否已建立?

1 个答案:

答案 0 :(得分:1)

您替换以下方法

 HttpTransportSE androidTSE=new HttpTransportSE(URL);

 AndroidHttpTransport androidTSE= new AndroidHttpTransport(URL, Timeout);
 androidTSE.debug = true;
 androidTSE.call(SOAP_ACTION, envelope);