利用webservice与后台通信

本文介绍了一种使用Java调用WebService的方法,包括创建SOAP请求、设置参数、生成SOAP信封及发送请求的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class HttprequestUtil {
    /**
     * 调用WebService   @return WebService的返回值
     */
    public  String CallWebService(String NameSpace,String SoapAction,String Url,String MethodName, Map<String, String> Params) {
        // 1、指定webservice的命名空间和调用的方法名
        SoapObject request = new SoapObject(NameSpace, MethodName);
        // 2、设置调用方法的参数值,如果没有参数,可以省略,
        if (Params != null) {
            Iterator iter = Params.entrySet().iterator();
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                request.addProperty((String) entry.getKey(),
                        (String) entry.getValue());
            }
        }
        // 3、生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
        envelope.bodyOut = request;
        // c#写的应用程序必须加上这句
        envelope.dotNet = true;
        //设置服务器的超时时间
        HttpTransportSE ht = new HttpTransportSE(Url,60000);
        //SoapObject  resultso=null;
        // 使用call方法调用WebService方法
        try {
            ht.call(SoapAction, envelope);
            Object result = envelope.getResponse();
             if (result != null) {
                //Log.d("----收到的回复----", result.toString());
                //resultso= (SoapObject) envelope.bodyIn;
                return result.toString();//得到web service的返回结果
            }
        } catch (SocketTimeoutException e){
           e.printStackTrace();
            //Toast.makeText(context,"服务器连接超时",Toast.LENGTH_SHORT).show();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

1、向后台传递数据,可以实现数据上传也可以是请求数据
实例化一个SoapObject对象,指定webservice的命名空间和调用方法
SoapObject request = new SoapObject("http://tempuri.org/", "operatingLogin");
request.addProperty(key, value);通过方法传递参数,传递字符串类型

SoapSerializationEnvelope envelope = new SoapSericalizationEnvelope(SoapEnvelope.VER12);
实例化SoapSerializationEnvelope对象,用于描述Webservice方法的SOAP请求信息
envelope.bodyOut = request;指明描述对象

核心代码,实现服务器请求
HttpTransportSE ht = new HttpTransportSE("http://113.108.8.46:75/WebService/UserAccountWebService.asmx?wsdl" , 60000);
ht.call("http://tempuri.org/operatingLogin",envelop);开始请求
Obeject response = envelope.getResponse();得到返回对象,一般都是json数据格式
String jsonStr = response.toString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值