http请求异步同步

2 篇文章 0 订阅

1.http远程请求接口,连接超时问题
2.最初设置请求连接时间,但是还是不好使。后来发现是异步的,修改了一下,就可以了

public static final OkHttpClient httpClient = new OkHttpClient();


//同步
public static String getLongRangeBat(String url,List<String> fileNames,Map<String,Object> map) throws IOException{
		OkHttpClient httpClient = new OkHttpClient.Builder().readTimeout(5,TimeUnit.MINUTES).build();
		Request request= new Request.Builder().url(url).post(getRequestBody(fileNames,map)).build();
		Response  response =  httpClient.newCall(request).execute();
		String strBody = response.body().string();
		return strBody;
}

//异步
public static ResponseBody upLoadFileConnector(String url,List<String> fileNames,Map<String,Object> map) throws IOException{
		httpClient.newBuilder().connectTimeout(60,TimeUnit.MINUTES)//连接超时时间
		  				.readTimeout(120, TimeUnit.MINUTES);//设置读取超时时间
		Call call = httpClient.newCall(getRequest(url,fileNames,map)) ;
		Response response = call.execute();
		if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
		return response.body();
}
	
private static Request getRequest(String url, List<String> fileNames,Map<String,Object> map) {
        Request.Builder builder = new Request.Builder();
        builder.url(url).header("authorization", "999999").post(getRequestBody(fileNames,map));
        return builder.build();
}



private static RequestBody getRequestBody(List<String> fileNames,Map<String,Object> map) {
        MultipartBody.Builder builder = new MultipartBody.Builder();
        builder.setType(MultipartBody.FORM);    //注意这里是from表单
        if(fileNames != null){
    	   for(String filePath:fileNames){
               File file = new File(filePath); 
               builder.addFormDataPart("file",file.getName(),
                     RequestBody.create(MediaType.parse("multipart/form-data"), file) 
               );
           }
        }
        if(map != null ){
        	Set<Entry<String, Object>> entrySet = map.entrySet();
    		for (Entry<String, Object> entry : entrySet) {
    			  builder.addFormDataPart(entry.getKey(),entry.getValue()==null?"":entry.getValue().toString());
    		} 
        }
        return builder.build();
}





接受参数需要这个注解:@FormParam
@PostMapping(value="/autoCreateTestOut")
@ResponseBody
public String autoCreateTestOut(@FormParam("filePath") String filePath){
    String s = uploadServiceI.autoCreateTestOut(filePath);
    return s;
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值