Android中获取网络天气数据

//这是主类MainActivity,大部分操作在这里面完成,还有另一类MyApplication也很重要,有最重要 的ApiKey在里面

package com.example.day020c;


import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.apistore.sdk.ApiCallBack;
import com.baidu.apistore.sdk.ApiStoreSDK;
import com.baidu.apistore.sdk.network.Parameters;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity{  
    TextView mTextView;
    EditText mEditText;
    Button test;
    Context context;
    String cityname;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        intUI();
    }
     
     
     private void intUI() {
         mTextView = (TextView) findViewById(R.id.mainTextView);
         test = (Button) findViewById(R.id.mainButton);
         test.setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View v) {
           mEditText=(EditText) findViewById(R.id.mainEditText);
           cityname=mEditText.getText().toString().trim();
           mTextView.setText("");
           apiTest();
         }
         });
         }
     
     
     @SuppressWarnings("unchecked")
    private void apiTest() {
         Parameters para = new Parameters();
         para.put("citypinyin", cityname);
         ApiStoreSDK.execute("http://apis.baidu.com/apistore/weatherservice/weather"
         //ApiStoreSDK.execute("http://apis.baidu.com/3023/weather/weather"
                 ,ApiStoreSDK.GET,para,new ApiCallBack(){
                     @Override
                    public void onSuccess(int status, String responseString)
                     {
                     Log.i("sdkdemo", "onSuccess");
                     weathershow(responseString);
                     //mTextView.setText(responseString);
                     System.out.println(responseString);
                     }

                     @Override
                     public void onComplete() {
                     Log.i("sdkdemo", "onComplete");
                     }

                     @Override
                     public void onError(int status, String responseString, Exception e) {
                     Log.i("sdkdemo", "onError, status: " + status);
                     Log.i("sdkdemo", "errMsg: " + (e == null ? "" : e.getMessage()));
                     mTextView.setText(getStackTrace(e));
                     }
                     });
                 }
     
     String getStackTrace(Throwable e)
     {
         if (e == null)
            {
              return "";
            }
         StringBuilder str = new StringBuilder();
         str.append(e.getMessage()).append("\n");
         for (int i = 0; i < e.getStackTrace().length; i++)
            {
                str.append(e.getStackTrace()[i]).append("\n");
            }
         System.out.println(str.toString());
             return str.toString();
      }   
     
     private void weathershow(String json){
         try {
         JSONObject retData = new JSONObject(json).getJSONObject("retData");
         String postCode = retData.getString("postCode");
         String cityCode = retData.getString("citycode");
         String city = retData.getString("city");
         String pinyin = retData.getString("pinyin");
         String date = retData.getString("date");
         String time = retData.getString("time");
         String longitude = retData.getString("longitude");
         String latitude = retData.getString("latitude");
         String weather = retData.getString("weather");
         String temp = retData.getString("temp");
         String l_tmp = retData.getString("l_tmp");
         String h_tmp = retData.getString("h_tmp");
         String WD = retData.getString("WD");
         String WS = retData.getString("WS");
         String sunrise = retData.getString("sunrise");
         String sunset = retData.getString("sunset");
         mTextView.setText("\n城市:"+city+"\n拼音:"+pinyin+"\n城市编码:"+cityCode+"\n日期:"+date+"\n更新时间:"+time+"\n邮编:"+postCode
         +"\n经度:"+longitude+"\n纬度:"+latitude+"\n天气:"+weather+"\n温度:"+temp+"\n最低温度:"+l_tmp+"\n最高温度:"+h_tmp+"\n风向:"+WD
         +"\n风力:"+WS+"\n日出时间:"+sunrise+"\n日落时间:"+sunset);
         } catch (JSONException e) {
         System.out.println("Json parse error");
         e.printStackTrace();
         }
     } 
 }


//MyApplication,里面的ApiKey必须每个开发者自己去ApiStore申请一个唯一的ApiKey才可以,

package com.example.day020c;

import com.baidu.apistore.sdk.ApiStoreSDK;
import android.app.Application;

public class MyApplication extends Application {
    public void onCreate() {
        // TODO 您的其他初始化流程
        ApiStoreSDK.init(this, "你自己的ApiKey");//一定要记得写自己的ApiKey
        super.onCreate();
    }
}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值