android webservice调用

一、HttpTransportSE call 调用抛出异常,主要是由于AndroidManifest.xml文件中

   <uses-sdk android:minSdkVersion="10"  android:targetSdkVersion="18"/>

   minSdkVersion>9时,不能在主线程中调用网络服务,要建个子线程Thread,在子线程中调用网络访问。

 /**

     * 登录系统,成功返回true,失败返回false 

     */  

    public static boolean loginSystem(String userName,String password) 

    {  

        try {  

            //1.实例化SoapObject对象  

            SoapObject request = new SoapObject(NAMESPACE, LOGINSYSTEM);  

            

            //2.如果方法需要参数,设置参数

            try{

            password = getMD5(password);

            }

            catch(NoSuchAlgorithmException e)

            {

            return false;

            }

            catch(UnsupportedEncodingException e)

            {

            return false;

            }


            request.addProperty("UserName", userName);

            request.addProperty("Password", password);

            request.addProperty("LoginKey", m_loginKey);


            //3.设置Soap的请求信息,参数部分为Soap协议的版本号  

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

            envelope.dotNet = true;//服务器端为.net

            envelope.bodyOut = request;

              

            //4.构建传输对象,5秒超时

            HttpTransportSE transport = new HttpTransportSE(APPSERVICEURL,5000);

            //transport.debug = true;  

              

            //5.访问WebService,第一个参数为命名空间 + 方法名,第二个参数为Envelope对象  

           

List headerProperties = transport.call(NAMESPACE + LOGINSYSTEM, envelope,null);

            if (headerProperties==null)

            {

            b_ServerResponse = false;

            return false;

            }

              

            //6.解析返回的数据  

            SoapObject soapObj=(SoapObject) envelope.bodyIn;

            if (soapObj==null)

            {

            b_ServerResponse = false;

            return false;

            }

            

            b_ServerResponse = true;

            String jsonStr=soapObj.getProperty(0).toString();

            try

            {

            JSONObject jsonObj = new JSONObject(jsonStr);

            int code = jsonObj.getInt("code");

            m_msg = jsonObj.getString("msg");

            String data = jsonObj.getString("data");

            JSONObject jsonData1 = new JSONObject(data);

            if (code==0)

            {

            return false;

            }

            b_Login = true;

            

            // 若登陆成功,设置cookie

            m_Uid = code;

            m_userName = userName;

m_cookies = new ArrayList();

for (Object obj : headerProperties)

{

HeaderProperty h = (HeaderProperty) obj;


if ((h.getKey() + "").equalsIgnoreCase("Set-Cookie"))

{

String valueString;

valueString = h.getValue();

valueString = valueString.split(";")[0];

int index = valueString.indexOf("SessionId=");

if (index!=-1)

{

m_sessionId = valueString.substring(index+10);

}

HeaderProperty h1 = new HeaderProperty("Cookie",

valueString);


m_cookies.add(h1);

}


}

            return true;

            

            

            }

            catch(JSONException e)

            {

            

            }

        } 

        catch (IOException e)

        {

        e.printStackTrace(); 

            b_ServerResponse = false;

        }

        catch (XmlPullParserException e)

        {

        e.printStackTrace(); 

            b_ServerResponse = false;

        }

        catch (Exception e) 

        {  

            e.printStackTrace(); 

            b_ServerResponse = false;

        }


        return false;  

    }


你可能感兴趣的:(android webservice调用)