public static boolean getData(String param) { //WebService服务器地址 String SERVICE_URL = "http://222.222.221.197:82/webserviceurl.asmx"; //URL命名空间 String SERVICE_NS = "http://namespace.org/"; //访问方法 String methodName = "myMethod"; // 创建SoapObject对象, // 创建该对象时需要传入所要调用Wb Service的命名空间、Web Service方法名; SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); // 如果有参数要传给Web Service服务器, // 调用SoapObject对象的addProperty(String name,Object value)方法来设置参数, // 该方法的name参数指定参数名; // value参数指定参数值 soapObject.addProperty("p1", param); // 使用SOA1.1协议创建Envelop对象 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = soapObject; // 是否调用DotNet开发的WebService ,设置与.net提供的Web Service 保持较好的兼容性 envelope.dotNet = true; //如果不是.net的可以删除此行 try { // 通过HttpTransportSE传输对象,传入WebService服务器地址 HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); // 调用HttpTransportSE对象的call()方法,其中call的第一个参数soapAction, // 第二个为SoapSerializationEvelope对象 调用远程Web Service; ht.call(SERVICE_NS + methodName, envelope); if (envelope.getResponse() != null) { // 获取服务器响应返回的SOAP消息 /* * SoapObject result = (SoapObject) envelope.bodyIn; * SoapObject detail = (SoapObject) result.getProperty(methodName+"Result"); */ /* * 获取返回的数据 SoapObject object = (SoapObject) envelope.bodyIn; * 获取返回的结果 String result = object.getProperty(0).toString(); */ // 解析服务器相应的SOAP消息-字符串 String result = envelope.getResponse().toString(); if (result.equals("success")) { return true; } } } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { System.out.println("********************异常啦"); } return false; }
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。XML+XSD(XML Schema),SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)就是构成WebService平台的三大技术。SOAP协议 = HTTP协议 + XML数据格式
适用场合:1、跨防火墙通信。2、应用程序集成。3、B2B集成。4、软件和数据重用。
不适用场合:1、单机应用程序。2、局域网的同构应用程序