okhttp上传文件和表单
时间: 2023-11-06 16:48:39 浏览: 110
你可以使用OkHttp库来进行文件上传和表单提交。下面是一个示例代码,演示了如何使用OkHttp进行文件上传和表单提交:
```java
import okhttp3.*;
import java.io.File;
import java.util.concurrent.TimeUnit;
public class FileUploadExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
// 构建表单数据
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("username", "john")
.addFormDataPart("password", "123456")
.addFormDataPart("file", "file.txt",
RequestBody.create(MediaType.parse("text/plain"), new File("path/to/file.txt")))
.build();
// 构建请求
Request request = new Request.Builder()
.url("http://example.com/upload")
.post(requestBody)
.build();
// 发送请求
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
System.out.println("上传成功");
} else {
System.out.println("上传失败");
}
response.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,我们首先创建了一个`OkHttpClient`实例,并设置了连接和读取超时时间。然后,我们使用`MultipartBody.Builder`构建了一个包含表单数据的`RequestBody`对象。在表单数据中,我们添加了两个字段`username`和`password`,以及一个文件字段`file`,指定了要上传的文件路径。接下来,我们使用`Request.Builder`构建了一个POST请求,将构建的`RequestBody`作为请求体,并指定了上传的URL。最后,我们使用`client.newCall(request).execute()`发送请求,并根据响应结果判断上传是否成功。
请根据你的实际需求修改代码中的URL、表单字段和文件路径。另外,记得处理可能抛出的异常情况,如连接超时、IO异常等。
阅读全文