Android开发 获取天气预报(天气,气温,风力...)WebService

 * 获取天气预报(天气,气温,风力...)
 */
public class MainActivity extendsActivity {

    privatestatic final String NAMESPACE = "http://WebXml.com.cn/";
    // WebService地址 后面的?wsdl根据WebService地宫的地址可加可不加
    privatestatic String URL = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
    privatestatic final String METHOD_NAME = "getWeatherbyCityName";
    privatestatic String SOAP_ACTION = NAMESPACE + METHOD_NAME;

    privateString weatherToday;

    privateButton okButton;
    privateSoapObject detail;

    @Override
    publicvoid onCreate(Bundle savedInstanceState) {

        StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder()
                .detectDiskReads().detectDiskWrites().detectNetwork()// 这里可以替换为detectAll()
                                                                        // 就包括了磁盘读写和网络I/O
                .penaltyLog()// 打印logcat,当然也可以定位到dropbox,通过文件保存相应的log
                .build());
        StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder()
                .detectLeakedSqlLiteObjects()// 探测SQLite数据库操作
                .penaltyLog()// 打印logcat
                .penaltyDeath().build());

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        okButton = (Button) findViewById(R.id.ok);

        okButton.setOnClickListener(newButton.OnClickListener() {
            publicvoid onClick(View v) {
                showWeather();
            }
        });
    }

    privatevoid showWeather() {
        String city ="郑州";
        getWeather(city);
    }

    publicvoid getWeather(String cityName) {
        try{
            SoapObject rpc =new SoapObject(NAMESPACE, METHOD_NAME);
            rpc.addProperty("theCityName", cityName);

            HttpTransportSE ht =new HttpTransportSE(URL);
            ht.debug =true;

            SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);

            envelope.bodyOut = rpc;
            envelope.dotNet =true;
            envelope.setOutputSoapObject(rpc);

            ht.call(SOAP_ACTION, envelope);
            // ht.call(null, envelope);

            SoapObject result = (SoapObject) envelope.bodyIn;
            detail = (SoapObject) result
                    .getProperty("getWeatherbyCityNameResult");

            System.out.println("result"+ result);
            System.out.println("detail"+ detail);
            Toast.makeText(MainActivity.this, detail.toString(),
                    Toast.LENGTH_LONG).show();
            parseWeather(detail);

            return;
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    privatevoid parseWeather(SoapObject detail)
            throwsUnsupportedEncodingException {
        String date = detail.getProperty(6).toString();
        weatherToday ="今天:" + date.split(" ")[0];
        weatherToday = weatherToday +"\n天气:" + date.split(" ")[1];
        weatherToday = weatherToday +"\n气温:"
                + detail.getProperty(5).toString();
        weatherToday = weatherToday +"\n风力:"
                + detail.getProperty(7).toString() +"\n";
        System.out.println("weatherToday is "+ weatherToday);
        Toast.makeText(MainActivity.this, weatherToday, Toast.LENGTH_LONG)
                .show();

    }

    @Override
    publicboolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);

        returntrue;
    }
}


你可能感兴趣的:(Android,Dev,Android开发之道)