zoukankan      html  css  js  c++  java
  • android实现解析webservices

    package com.example.ksoap2demo;
    
    import java.io.UnsupportedEncodingException;
    
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button okButton;
        
        // 命名空间
        private static final String NAMESPACE = "http://WebXml.com.cn/";
        
        // WebService地址
        private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
    
        // 方法
        private static final String METHOD_NAME = "getWeatherbyCityName";
    
        /**
         *  SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"
         */
        private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
    
        private String weatherToday;
    
        private SoapObject detail;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 查询按钮
            okButton = (Button) this.findViewById(R.id.btn_Search);
            okButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String city = "北京";
                    getWeather(city);
                }
            });
    
        }
    
        public void getWeather(final String cityName) {
            new Thread(new Runnable() {
    
                public void run() {
                    try {
                        System.out.println("rpc------");
                        SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
                        System.out.println("rpc..." + rpc);
                        System.out.println("cityName is... " + cityName);
    
                        rpc.addProperty("theCityName", cityName);
                        
    
                        /**
                         * 生成调用Webservice方法的SOAP请求信息
                         * 
                         * 创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协议的版本号
                         * 。 该版本号需要根据服务端WebService的版本号设置。
                         * 在创建SoapSerializationEnvelope对象后
                         * ,不要忘了设置SOAPSoapSerializationEnvelope类的bodyOut属性,
                         * 该属性的值就是在第一步创建的SoapObject对象。
                         */
                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                                SoapEnvelope.VER11);
                        envelope.bodyOut = rpc;
                        envelope.dotNet = true;
                        envelope.setOutputSoapObject(rpc);
    
                        HttpTransportSE ht = new HttpTransportSE(URL);
    
                        ht.debug = true;
    
                        ht.call(SOAP_ACTION, envelope);
    
                        detail = (SoapObject) envelope.getResponse();
    
                        parseWeather(detail);
    
                        return;
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        private void parseWeather(SoapObject detail)
                throws UnsupportedEncodingException {
            String date = detail.getProperty(6).toString();
            weatherToday = "今天:" + date.split(" ")[0];
            weatherToday = weatherToday + "
    天气:" + date.split(" ")[1];
            weatherToday = weatherToday + "
    气温:"
                    + detail.getProperty(5).toString();
            weatherToday = weatherToday + "
    风力:"
                    + detail.getProperty(7).toString() + "
    ";
            System.out.println("weatherToday is " + weatherToday);
    
            getWindow().getDecorView().post(new Runnable() {
    
                public void run() {
                    Toast.makeText(getWindow().getDecorView().getContext(),
                            weatherToday, Toast.LENGTH_LONG).show();
    
                }
            });
    
        }
    
    }


    JAR包下载:http://download.csdn.net/detail/androidsj/6239751

  • 相关阅读:
    TinyEditor:简洁且易用的html所见即所得编辑器
    arguments.callee 调用自身
    java.io.IOException: 设备未就绪
    关于vcastr3播放器自动播放的问题
    javascript中IE浏览器不支持NEW DATE()带参数的解决方法
    Oracle常用查看表结构命令
    java通过文件头内容判断文件类型
    RS开发日期提示控件默认为昨天
    Cognos更新问题之利用Transform实现Cube增量更新
    SqlServer中从字符串中获取项目指标方法charindex月substring结合
  • 原文地址:https://www.cnblogs.com/androidsj/p/3310961.html
Copyright © 2011-2022 走看看