微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

请求webservice连接,判断用户是否打开网络

1、第一种连接,判断了网络是否打开

/**

     * 查询数据
     *
     * @param context
     * @param methodName
     * @param Parameters
     * @param ParValues
     * @return List<>
     */
    public static List<HashMap<String,String>> getInfo(Context context,String methodName,ArrayList<String> Parameters,
            ArrayList<String> ParValues) {
        List<HashMap<String,String>> listOut = new ArrayList<HashMap<String,String>>();
        // 调用webservice接口的名称空间+方法名称
        String soapAction = webNameSpace + methodName;
        // 指定webservice的命名空间和调用方法
        SoapObject rpc = new SoapObject(webNameSpace,methodName);
        if (Parameters.size() > 0) {
            for (int i = 0; i < Parameters.size(); i++) {
                rpc.addProperty(Parameters.get(i),ParValues.get(i));
            }
        }
        // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本,该版本号需要根据服务器段WebService的版本号设置
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER10);

        envelope.bodyOut = rpc;
        // 设置是否调用的.net开发的webservice
        envelope.dotNet = true;
        // 等价于envelope.bodyOut=rpc
        envelope.setoutputSoapObject(rpc);
        envelope.encodingStyle = "UTF-8";
        // 创建HttpTransportSE对象,通过HttpTransportSE类的构造方法可指定WebService的WSDL文档的URL
        HttpTransportSE transport = new HttpTransportSE(webServiceUrl);//UIl地址后可以加超时操作
        try {
            // 使用call方法调用WebService方法
            transport.call(soapAction,envelope);
            if (envelope.getResponse()!=null) {
                // 获取返回的数据
                SoapObject object = (SoapObject) envelope.bodyIn;
                // 获取返回的结果
                String jsonStr = object.getProperty(0).toString();
                Gson gson = new Gson();
                listOut = gson.fromJson(jsonStr,
                        new Typetoken<List<HashMap<String,String>>>() {
                        }.getType());
            }
        } catch (Exception e) {
            e.printstacktrace();
            //网连接失败,使用Toast显示提示信息
            Toast.makeText(context,"网络访问失败,请检查网络连接!",Toast.LENGTH_LONG).show();

        }finally{
            try {
                transport.getServiceConnection().disconnect();
            } catch (IOException e) {
                // Todo Auto-generated catch block
                e.printstacktrace();
            }
        }
        
        return listOut;

    }


2、第二种连接,没有判断用户是否打开网络,可以根据第一个添加判断

public static String getRemoteInfoTest(String methodName) {         // 命名空间         String NAMESPACE = "http://carnavigation.com.org/";         // 网址         String URL = "http://219.232.252.9:8011/DBWebService.asmx";         // 方法名         // String METHOD_NAME = "getonecompArticles";         // SOAPACTION         // String SOAP_ACTION =         // "http://carnavigation.com.org/getonecompArticles";         String SOAP_ACTION = NAMESPACE + methodName;         SoapObject rpc = new SoapObject(NAMESPACE,methodName);         // 设置需调用WebService接口需要传入的参数         // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(                 SoapEnvelope.VER10);         envelope.bodyOut = rpc;         // 设置是否调用的是dotNet开发的WebService         envelope.dotNet = true;         // 等价于envelope.bodyOut = rpc;         envelope.setoutputSoapObject(rpc);         HttpTransportSE transport = new HttpTransportSE(URL);         try {             // 调用WebService             transport.call(SOAP_ACTION,envelope);         } catch (Exception e) {             e.printstacktrace();         }         // 获取返回的数据         SoapObject object = (SoapObject) envelope.bodyIn;         // 获取返回的结果         String result = object.getProperty(0).toString();         return result;     }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐