还是和之前的android与服务器交互一样使用了okhttp库。
http请求不能写在主线程。
服务器地址要是http需要给予明文传输权限,之前都有介绍。
https则不用。
new Thread(() -> { try{ OkHttpClient client = new OkHttpClient();//创建服务器 File file;//目标文件 MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM); RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"),file);//设置上传文件类型 requestBody.addFormDataPart("file",file.getName(),fileBody); Request request = new Request.Builder() .url("服务器接口地址") .post(requestBody.build()) .build();// 这个5000是发送完file超过5秒钟没有得到服务器回复就取消 client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { Log.d("文件上传","失败"); } @Override public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { if(response.isSuccessful()){//判断是否成功 }else{ Log.d("文件上传","失败"); } } }); }catch (Exception e){ runOnUiThread(() -> Toast.makeText(InputActivity.this,"发送失败",Toast.LENGTH_LONG).show()); } }).start();