首先导入xUtils 和 gson 的 jar 包。
API 23之后的xUtils导入后运行程序会报错。错误:无法访问HttpRequestBase找不到org.apache.http.client.methods.HttpRequestBase的类文件。
解决办法是:android studio:在相应的module下的build.gradle中加入:
android {
useLibrary 'org.apache.http.legacy'
}
注意放置的位置:是在android {}中。
private void requestServer() { HttpUtils httpUtils = new HttpUtils(); httpUtils.send(HttpRequest.HttpMethod.GET, GlobalUtils.URL+cityName, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { String result = responseInfo.result; if (!result.contains("1000")){ Toast.makeText(mContext, "没有这个城市!请输入正确的城市名!比如:北京", Toast.LENGTH_LONG).show(); return; } holder.ll_weather.setVisibility(View.VISIBLE); holder.ll_weather_bottom.setVisibility(View.VISIBLE); holder.main_tv_tip.setVisibility(View.GONE); Log.e("seven", result); gsonParseJson(result); } @Override public void onFailure(HttpException e, String s) { Toast.makeText(mContext, "访问服务器失败", Toast.LENGTH_SHORT).show(); holder.ll_weather.setVisibility(View.GONE); holder.ll_weather_bottom.setVisibility(View.GONE); holder.main_tv_tip.setVisibility(View.VISIBLE); } }); }
使用xUtils的HttpUtils的send方法传入访问方式、服务器URL、new一个请求回调。来获取json数据。
private void gsonParseJson(String json) { Gson gson = new Gson(); WeatherGson weatherGson = gson.fromJson(json, WeatherGson.class); Log.e("seven", "解析结果" + weatherGson); setTextData(weatherGson); setFutureData(weatherGson); }
使用gson的fromJson方法传入json字符串、javaBean类。来解析json数据封装到javaBean对象。
javaBean中遇到 {} 创建类对象、遇到 [] 创建ArrayList集合(泛型基本为类对象)。使用数据时用get方法来获取数据。
xUtils需要加权限!!
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />