通过web service查询天气

public class MainActivity extends AppCompatActivity {
    //网络上提供的webService调用地址
    String url="http://www.gpsso.com/webservice/weather/weatherinfo.asmx";
    private String namespace="http://gpsso.com/";//请求网络服务的命名空间
    private String  name="GetToDayWeatherInfo";//网络服务方法名
    private String soapAction="http://gpsso.com/GetToDayWeatherInfo";
    private TextView name1;
    private Handler myHandler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            name1.setText(msg.obj.toString());
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        Button btn=(Button) findViewById(R.id.button1);
        name1=(TextView)findViewById(R.id.tv);

        //为按钮添加监听;实现点击按钮获取天气
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(){
                    @Override
                    public void run() {
                        requestData();
                    }}.start();
            }
        });


    }
    public void requestData(){
        //创建SoapObject对象 需要命名空间 及 调用的方法名
        SoapObject so=new SoapObject(namespace,name);
        //设置参数
        so.addProperty("APICode", "11711281304268906523");
        so.addProperty("APIKey", "559868A0C2B546619AEE8F7E12AB76");
        so.addProperty("CityCode", "101010100");

        //创建一个httpTransportSE
        HttpTransportSE httpTransportSE=new HttpTransportSE(url);
        //创建SoapSerializationEnvelope对象,设置版本号
        SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
        //设置发送给服务器的数据
        envelope.bodyOut=so;
        //设置支付语言
        envelope.dotNet=true;

        try {
            //调用服务
            httpTransportSE.call(soapAction,envelope);

            //6.获取服务器返回的soap消息
            SoapObject result=(SoapObject)envelope.bodyIn;

            //先拿到 方法名+Result 的SoapObject对象
            SoapObject weatherResult=(SoapObject) result.getProperty("GetToDayWeatherInfoResult");

            //得到api属性值-是一个对象
            SoapObject city=(SoapObject)weatherResult.getProperty(0);

            //得到城市
            String cicici=city.getProperty("CITY").toString();
            String wd=city.getProperty("WD").toString();

           Log.d("zzz", "城市是:"+cicici+" 风况:"+wd);


            //打印结果
            Log.d("zzz", result.toString());

            //创建消息
            Message msg=Message.obtain();
            msg.obj="城市是:"+cicici+" 风况:"+wd;
            //发消息
            myHandler.sendMessage(msg);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值