okhttp3+retrofit2进行HTTP请求以及设置请求超时示例
2016-06-22 16:30
615 查看
采用retrofit2本身可以进行优雅的RESTFul请求,但是无法设置请求超时时间,需要配合okhttp3来设置请求超时.
相关网站:
http://square.github.io/retrofit/
https://github.com/square/retrofit
https://github.com/square/okhttp
http://square.github.io/okhttp/
参考:
http://stackoverflow.com/questions/29380844/how-to-set-a-timeout-in-retrofit-library
<retrofit-version>2.0.2</retrofit-version> <okhttp-version>3.3.1</okhttp-version> <dependency> <groupId>com.squareup.retrofit2</groupId> <artifactId>retrofit</artifactId> <version>${retrofit-version}</version> </dependency> <dependency> <groupId>org.ligboy.retrofit2</groupId> <artifactId>converter-fastjson</artifactId> <version>${retrofit-version}</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>${okhttp-version}</version> </dependency>
相关网站:
http://square.github.io/retrofit/
https://github.com/square/retrofit
https://github.com/square/okhttp
http://square.github.io/okhttp/
//Retrofit请求接口 public interface CmsManager{ @GET("/sword/cms/web/sitesync/site") Call<JSONObject> verifySite(@QueryMap Map<String,String> params); } public static void sync(SyncMeta meta){ Map<String,String> map=new HashMap<>(); map.put("siteKey", meta.getSiteKey()); map.put("siteMd5", meta.getSiteMd5()); log.info("site key is:{} ;; site md5 is :{}",meta.getSiteKey(),meta.getSiteMd5()); OkHttpClient.Builder httpBuilder=new OkHttpClient.Builder(); OkHttpClient client=httpBuilder.readTimeout(3, TimeUnit.MINUTES) .connectTimeout(3, TimeUnit.MINUTES).writeTimeout(3, TimeUnit.MINUTES) //设置超时 .build(); Retrofit retrofit=new Retrofit.Builder().baseUrl(meta.getRemoteUrl()) //设置请求路径 .addConverterFactory(FastJsonConverterFactory.create()) //设置转换器为FastJson提供的工厂 .client(client).build(); //设置请求客户端为OkHttpClient CmsManager cms=retrofit.create(CmsManager.class); Call<JSONObject> call=cms.verifySite(map); //异步请求方式 // call.enqueue(new Callback<JSONObject>() { // @Override // public void onResponse(Call<JSONObject> arg0, Response<JSONObject> arg1) { // JSONObject obj=arg1.body(); // log.info("向cms管理端请求成功,返回值为{}",obj==null?"":obj.toJSONString()); // } // @Override // public void onFailure(Call<JSONObject> arg0, Throwable arg1) { // log.error("向cms管理端请求失败",arg1); // } // }); try { //同步请求方式 Response<JSONObject> resp=call.execute(); JSONObject obj=resp.body(); log.info("向cms管理端请求成功,返回值为{}",obj==null?"":obj.toJSONString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); log.error("向cms管理端请求失败",e); } }
参考:
http://stackoverflow.com/questions/29380844/how-to-set-a-timeout-in-retrofit-library
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树