从web服务器的json文件中读取数据
AndroidManifest.xml
访问网络权限
<uses-permission android:name="android.permission.INTERNET" />
在使用android-json-rpc
的时候报java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion
错误
在application
标签里面加入
<uses-library android:name="org.apache.http.legacy" android:required="false" />
访问http
时崩溃,因为Android9.0
默认是禁止所有的http
的,所以在application
标签属性里面加入
android:usesCleartextTraffic="true"
声明是否允许未加密的网络流量,默认为false。
MainActivity.java
手动写一个StringRequest
子类
new StringRequest(
url, //第一个参数,web服务器的ip地址
Response.Listener<String> resListener, //第二个参数,volley的监听器
Response.ErrorListener resErrorListener //第三个参数,响应失败
){ //将默认的iso-8859-1格式转换为utf-8
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data, "UTF-8");
return Response.success(jsonString,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
} ;
监听器
class mClick implements View.OnClickListener
{
String str;
@Override
public void onClick(View v) {
if(v == volleyBtn){
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);
StringRequest stringRequest = new StringRequest(
//第一个参数,web服务器的ip地址
"http://203.195.219.146:8080/android_ch7_ex2/test/jsonData.json",
// 第二个参数,volley的监听器
new Response.Listener<String>() { //volley的监听器,
@Override
public void onResponse(String response)
{ txt.setText(response); }// onResponse()方法获取接收到的数据值
},
// 第三个参数,响应失败
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error)
{ Log.e("TAG", error.getMessage(), error); }
}) { //将默认的iso-8859-1格式转换为utf-8
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data, "UTF-8");
return Response.success(jsonString,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
} ;
mQueue.add(stringRequest);
} // if_end
} //onClick()_end
} //class mClick_end