【已解决】 用OKhttp向服务器传文件报错:java.net.SocketException: Connection reset
private static final String TAG = "myownpic";
@RequiresApi(api = Build.VERSION_CODES.Q)
public void postFile() {
//先创建client
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.build();
//创建请求内容request body
MediaType flieType = MediaType.parse("image/jpg");
File file ;
file = new File (String.valueOf(uriToFileApiQ(mCameraUri,ivPhoto.getContext())));
RequestBody filebody = RequestBody.create(file,flieType);
RequestBody requestbody = new MultipartBody.Builder()
.addFormDataPart("file", file.getName(), filebody)
.build();
Request request = new Request.Builder()
.url(BASE_URL + "/upload")
.post(requestbody)
.build();
//使用client发出请求
Call task = client.newCall(request);
//进行异步请求
task.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.d(TAG,"onFailure..." + e.toString());
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
int code = response.code();
Log.d(TAG,"code..." + code);
if (code == HttpURLConnection.HTTP_OK){
ResponseBody body = response.body();
if (body!=null){
String result = body.string();
Log.d(TAG,"result..." + result );
}
}
}
});
}
Apache搭建的服务端,flask搭建的web框架,运行后报错java.net.SocketException: Connection reset。
代码传图片至别人服务器能成功,用postman测试我的服务器也能成功,但我的代码传我的服务器会报错。
上网查了一下说是CS端必须同是长连接或短连接,但是OKhttp和Apache都是长连接却还是报这个错,不知道怎么解决,求助大家。
解决了!
修改前:
修改后:
log呢?提供一下log吧。