安卓使用okhttp拍照上传服务器
时间: 2023-11-23 20:54:31 浏览: 37
使用OkHttp框架上传图片和参数需要请求网络,可以通过以下步骤实现:
1. 首先,在项目的build.gradle文件中添加OkHttp依赖:
```gradle
dependencies {
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
}
```
2. 在AndroidManifest.xml文件中添加相机和存储权限:
```xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
3. 在代码中使用以下方法来拍照并上传图片:
```java
private void uploadImage(File file) {
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file))
.build();
Request request = new Request.Builder()
.url("http://yourserver.com/upload")
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
// 上传成功
} else {
// 上传失败
}
} catch (IOException e) {
e.printStackTrace();
}
}
```
其中,file为拍摄的图片文件,可以通过以下代码获取:
```java
File file = new File(Environment.getExternalStorageDirectory(), "image.jpg");
```
需要注意的是,上传图片需要在子线程中进行,否则会抛出NetworkOnMainThreadException异常。