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(); } } }
通过web service查询天气
最新推荐文章于 2023-08-29 14:59:17 发布