StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put(“params1”, “value1”);
map.put(“params2”, “value2”);
return map;
}
};
返回错误类型有以下几种:
AuthFailureError:如果在做一个HTTP的身份验证,可能会发生这个错误。
NetworkError:Socket关闭,服务器宕机,DNS错误都会产生这个错误。
NoConnectionError:和NetworkError类似,这个是客户端没有网络连接。
ParseError:在使用JsonObjectRequest或JsonArrayRequest时,如果接收到的JSON是畸形,会产生异常。
SERVERERROR:服务器的响应的一个错误,最有可能的4xx或5xx HTTP状态代码。
TimeoutError:Socket超时,服务器太忙或网络延迟会产生这个异常。默认情况下,Volley的超时时间为2.5秒。如果得到这个错误可以使用RetryPolicy。
问题可以根据错误的类型查询相关文章
4.Retrofit
Retrofit是Square公司出品的默认基于OkHttp封装的一套RESTful网络请求框架,RESTful是目前流行的一套api设计的风格, 并不是标准。Retrofit的封装可以说是很强大,里面涉及到一堆的设计模式,可以通过注解直接配置请求,可以使用不同的http客户端,虽然默认是用http ,可以使用不同Json Converter 来序列化数据,同时提供对RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 可以说是目前比较潮的一套框架,但是需要有比较高的门槛。
使用教程:
主要有以下步骤:
1、get请求
2、post表单请求,
3、post 在body中发送json
3.1 retrofit 自动把java.class转成json字符串,并放在body中
3.2 重写Factory方法 手动把json字符串,并放在body中发送
3.3 通过RequestBody 手动把json字符串,并放在body中发送
public interface PostBodyInterface {
@POST(“bussIntfAction!getVersionUpdateInfo.action”)
Call getCall(@Body PostBodyReq postBodyReq);
}
/**
-
post 在body中发送json
-
retrofit 自动把java.class转成json字符串,并放在body中
*/
public void postBodyRequest() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
//设置日志Level
if (BuildConfig.DEBUG) {
// development build
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
} else {
// production build
logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
}
OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
//添加拦截器到OkHttp,这是最关键的
.addInterceptor(logging);
Log.w(“tan”,“po