关于网络请求组件的疑问
来源:8-8 功能测试

qq_坎坷人生_0
2019-12-05
使用网络请求组件的时候,由于voice包下面没有导入okhttp3的包所以编译器报错,然而我并不打算在voice包中导入okhttp3。然后我将网络请求组件修改了一下。新创了两个类MyCall和MyRequest 分别储存这些静态方法的返回值,然后将CommonOkHttpClient.get方法的返回类型改成MyCall,CommonRequest.createGetRequest改成MyRequest,然后就可以正常运行了(改动如下)。组件也可以正常使用。
但是我觉得CommonOkHttpClient.get方法的返回值类型直接改成void是不是更方便,反正也没有用到这个Call。还有我这样修改会不会有什么潜在的问题。
新增的两个类:
MyCall
import okhttp3.Call;
public class MyCall {
private Call call;
public Call getCall() {
return call;
}
public void setCall(Call call) {
this.call = call;
}
}
MyRequest
import okhttp3.Request;
public class MyRequest {
private Request request;
public Request getRequest() {
return request;
}
public void setRequest(Request request) {
this.request = request;
}
}
修改的方法
/**
* get请求
* @return
*/
public static MyCall get(MyRequest request, DisposeDataHandle handle){
Call call = mOkHttpClient.newCall(request.getRequest());
call.enqueue(new CommonJsonCallback(handle));
MyCall myCall = new MyCall();
myCall.setCall(call);
return myCall;
}
/**
* 构建get的请求对象
* @param url
* @param params
* @return
*/
public static MyRequest createGetRequest(String url,RequestParams params){
return createGetRequest(url,params,null);
}
/**
* 构建get的请求对象
* @param url
* @param params
* @param heads
* @return
*/
public static MyRequest createGetRequest(String url,RequestParams params,RequestParams heads){
StringBuilder urlBuilder = new StringBuilder(url).append("?");
if (params !=null){
for (Map.Entry<String,String>entry : params.urlParams.entrySet()){
//参数遍历
urlBuilder.append(entry.getKey())
.append("=")
.append(entry.getValue());
}
}
Log.e("CommonRequest get ",urlBuilder.toString());
Headers.Builder builderHeaders = new Headers.Builder();
if (heads != null){
for (Map.Entry<String,String>entry : heads.urlParams.entrySet()){
//请求头遍历
builderHeaders.add(entry.getKey(),entry.getValue());
}
}
Request request = new Request.Builder()
.url(url)
.headers(builderHeaders.build())
.get().build();
MyRequest myRequest = new MyRequest();
myRequest.setRequest(request);
return myRequest;
}
写回答
1回答
-
qndroid
2019-12-05
返回call可以取消请求
00