webService的使用和了解

了解并使用webService
webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回。
webService原理

代码举例:
如下代码实现在http://www.gpsso.com/webservice/weather/weatherinfo.asmx网址中,调用GetToDayWeatherInfo接口的实时天气来获取北京的天气情况:

public class MainActivity extends Activity {
//要访问的webService的网址 一般以.asmx结尾
private String url=”http://www.gpsso.com/webservice/weather/weatherinfo.asmx”;
//命名空间 注意:必须要以”/”结尾 wsdl可以找到 targetNamespace
private String namespace=”http://gpsso.com/”;
//请求的方法名
private String name=”GetToDayWeatherInfo”;
//soapAction=namespace+name
private String soapAction=”http://gpsso.com/GetToDayWeatherInfo”;
private TextView tv;

private Handler myHandler=new Handler(){
    public void handleMessage(android.os.Message msg) {
        //显示
        tv.setText(msg.obj.toString());
    };

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView) findViewById(R.id.tv);
}

public void getweather(View v){

    //新开启一个子线程,去访问网络
    new Thread(){
        public void run() {
            getWeatherData();

        };
    }.start();






}

private void getWeatherData() {
    //创建一个SoapObject对象
    SoapObject obj=new SoapObject(namespace, name);

    //传递三个参数信息
    obj.addProperty("APICode", "11709251728002768683");
    obj.addProperty("APIKey", "1F1FB4C41BDA4E3EB2E75D2A11BB55");
    obj.addProperty("CityCode", "101010100");//北京



    //1.创建 httpTran...对象
    HttpTransportSE hts=new HttpTransportSE(url);
    //2.创建Soap..Evenlope对象  确定soap协议的版本号  v10 v11  v12
    SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11);

    //3.设置传送给服务器的参数
    envelope.bodyOut=obj;

    //4.设置支付语言
    envelope.dotNet=true;

    try {
        //5.进行请求与访问
        hts.call(soapAction, envelope);


        //6.得到响应的结果
        SoapObject result=(SoapObject)envelope.bodyIn;

        //解析到GetToDayWeatherInfoResult
        SoapObject weatherInfoResult=(SoapObject)result.getProperty("GetToDayWeatherInfoResult");

        //解析得到API对象
        SoapObject apiObj=(SoapObject)weatherInfoResult.getProperty("API");

        String city=apiObj.getProperty("CITY").toString();
        String wd=apiObj.getProperty("WD").toString();
        String ws=apiObj.getProperty("WS").toString();
        String SD=apiObj.getProperty("SD").toString();

        //显示的信息
        String showText=city+"的实时天气情况是:"+"风力 "+wd+" "+ws+" 相对湿度:"+SD;

        Log.d("zzz", showText);

        Log.d("zzz", result.toString());


        //发消息给主线程,通知tv组件改变其内容
        Message msg=Message.obtain();
        msg.obj=showText;
        myHandler.sendMessage(msg);



        /**
         * 
         * GetToDayWeatherInfoResponse{GetToDayWeatherInfoResult=anyType{API=anyType{RESULTS=0; MESSAGE=接口查询成功; CITY=北京; CITYID=101010100; TEMP=18; WD=东南风; WS=1级; SD=17%; WSE=1; TIME=17:05; ISRADAR=1;RADAR=JC_RADAR_AZ9010_JB; NJD=暂无实况; QY=1011; RAIN=0; }; }; }

         */



    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值