Android開發 擷取天氣預報(天氣,氣溫,風力…)WebService

來源:互聯網
上載者:User
[android]程式碼程式庫view source

print?

/**
 * 擷取天氣預報(天氣,氣溫,風力...)
 */
public
class
MainActivity extends
Activity {
 
    private
static final
String NAMESPACE =
"http://WebXml.com.cn/";
    // WebService地址 後面的?wsdl根據WebService地宮的地址可加可不加
    private
static String URL =
"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
    private
static final
String METHOD_NAME =
"getWeatherbyCityName";
    private
static String SOAP_ACTION = NAMESPACE + METHOD_NAME;
 
    private
String weatherToday;
 
    private
Button okButton;
    private
SoapObject detail;
 
    @Override
    public
void onCreate(Bundle savedInstanceState) {
 
        StrictMode.setThreadPolicy(new
StrictMode.ThreadPolicy.Builder()
                .detectDiskReads().detectDiskWrites().detectNetwork()
// 這裡可以替換為detectAll()
                                                                        // 就包括了磁碟讀寫和網路I/O
                .penaltyLog()
// 列印logcat,當然也可以定位到dropbox,通過檔案儲存相應的log
                .build());
        StrictMode.setVmPolicy(new
StrictMode.VmPolicy.Builder()
                .detectLeakedSqlLiteObjects()
// 探測SQLite資料庫操作
                .penaltyLog()
// 列印logcat
                .penaltyDeath().build());
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        okButton = (Button) findViewById(R.id.ok);
 
        okButton.setOnClickListener(new
Button.OnClickListener() {
            public
void onClick(View v) {
                showWeather();
            }
        });
    }
 
    private
void showWeather() {
        String city =
"鄭州";
        getWeather(city);
    }
 
    public
void 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();
        }
    }
 
    private
void parseWeather(SoapObject detail)
            throws
UnsupportedEncodingException {
        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
    public
boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
 
        return
true;
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.