okhttp3+retrofit2进行HTTP请求以及设置请求超时示例

本文介绍了如何结合retrofit2和okhttp3来实现优雅的RESTful请求,并着重讲解了如何设置HTTP请求的超时时间。通过引用的相关网站和Stack Overflow问题,读者可以深入理解并实践这一操作。
摘要由CSDN通过智能技术生成

采用retrofit2本身可以进行优雅的RESTFul请求,但是无法设置请求超时时间,需要配合okhttp3来设置请求超时.

<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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值