加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 22:50:19 所属栏目:安全 来源:网络整理
导读:1、第一种连接,判断了网络是否打开 /** ?? ? * 查询数据 ?? ? * ?? ? * @param context ?? ? * @param methodName ?? ? * @param Parameters ?? ? * @param ParValues ?? ? * @return List ?? ? */ ?? ?public static ListHashMapString,String getInfo(Con

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; ?? ?}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读