获取含天气信息的JSON数据
2016-03-05 08:56
811 查看
百度的APIStore含有丰富的接口,涵盖了生活的许多方面。例如,我们就可以通过APIStore的某个接口获取到含有天气信息的JSON数据,从而实现天气预报。
首先,使用者要有一个百度账号,然后登陆以下网址:APIStore-中国和世界天气全能版
该接口含有免费的1000次试用套餐,对于个人开发者练手来说也已经够用了。
然后在API选项下点击——您自己的apikey,查看自己的apikey。该值是每个开发者和app的唯一标识,需要妥善保管,有了apikey才可以进行下一步的操作。
![](http://img.blog.csdn.net/20160305085607404)
接下来就该开始编写代码了
首先新建一个项目,然后为项目导入一个jar文件,该jar文件是百度提供的,下载地址:ApiStoreSDK1.0.4.jar
导入方法:
将jar文件复制到libs文件夹下,点击右键——Build Path——Add To Build Path。
在src包下,除了默认的MainActivity.java文件,再新建一个MyApplication.java文件,用来配置个人信息,代码如下:
然后需要在AndroidManifest.xml中application标签下android:name中指定该类
然后修改activity_main.xml文件,将整个视图包裹在ScrollView下,以便可以查看超出屏幕的数据,然后再新增一个Button,当点击按钮时请求JSON数据并显示。
修改MainActivity.java文件
运行程序,初始界面如下:
![](http://img.blog.csdn.net/20160305093253948)
点击按钮,这样就可以获取到包含天气信息的JSON数据了,通过进一步的解析,就可以获取到今天到未来六天的天气信息了。
![](http://img.blog.csdn.net/20160305093340543)
首先,使用者要有一个百度账号,然后登陆以下网址:APIStore-中国和世界天气全能版
该接口含有免费的1000次试用套餐,对于个人开发者练手来说也已经够用了。
然后在API选项下点击——您自己的apikey,查看自己的apikey。该值是每个开发者和app的唯一标识,需要妥善保管,有了apikey才可以进行下一步的操作。
接下来就该开始编写代码了
首先新建一个项目,然后为项目导入一个jar文件,该jar文件是百度提供的,下载地址:ApiStoreSDK1.0.4.jar
导入方法:
将jar文件复制到libs文件夹下,点击右键——Build Path——Add To Build Path。
在src包下,除了默认的MainActivity.java文件,再新建一个MyApplication.java文件,用来配置个人信息,代码如下:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ApiStoreSDK.init(this, "填写自己的apikey值"); } }
然后需要在AndroidManifest.xml中application标签下android:name中指定该类
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="com.baidu.apistore.sdk.MyApplication" android:theme="@style/AppTheme" > <activity android:name="com.baidu.apistore.sdk.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
然后修改activity_main.xml文件,将整个视图包裹在ScrollView下,以便可以查看超出屏幕的数据,然后再新增一个Button,当点击按钮时请求JSON数据并显示。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/mTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dip" /> <Button android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="获取数据" android:textSize="15sp" /> </LinearLayout> </ScrollView>
修改MainActivity.java文件
package com.baidu.apistore.sdk; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.TextView; import com.apistore.sdk.demo.R; import com.baidu.apistore.sdk.network.Parameters; /* * 测试前先在MyApplication.java中配置appkey */ public class MainActivity extends Activity { private TextView mTextView; private Button test; @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.mTextView); test = (Button) findViewById(R.id.test); test.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mTextView.setText(""); apiTest(); } }); } private void apiTest() { Parameters para = new Parameters(); // 根据城市拼音请求json数据 para.put("city", "beijing"); ApiStoreSDK.execute("http://apis.baidu.com/heweather/weather/free", ApiStoreSDK.GET, para, new ApiCallBack() { @Override // 以下三个函数为回调函数 // 当数据请求成功时调用 public void onSuccess(int status, String responseString) { mTextView.setText(responseString); } // 当数据请求完成时调用 @Override public void onComplete() { } // 当数据请求出错时调用 @Override public void onError(int status, String responseString, Exception e) { mTextView.setText(getStackTrace(e)); } }); } private 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"); } return str.toString(); } }
运行程序,初始界面如下:
点击按钮,这样就可以获取到包含天气信息的JSON数据了,通过进一步的解析,就可以获取到今天到未来六天的天气信息了。
项目的下载地址:获取含天气信息的JSON数据
相关文章推荐
- J2EE基础总结(4)——JSP
- 从Javascript开始
- Javascript作用域和变量提升
- for循环效率对比
- js基础
- JavaScript-正则表达式总结
- javascript中的BOM知识点总结
- JavaScript优化基本篇
- JS调用中文乱码怎么办
- JS 鼠标事件大全
- JS判断字符串字节数并截取长度的方法
- JavaScript原型
- js中的对象
- 160304-02、JS 中如何判断null 和undefined
- javascript 小白学习指南 继承
- JavaScript---快速回到页面顶部
- JavaScript插件:快速选择日期----jedate日历插件
- js 原生对象排序
- 解决IE浏览器中javascript,js不支持NEW DATE()带参数的问题
- js获取url?后的参数