上文已String格式上传可能会受很多不稳定因素影响导致无法成功上传,下面给出文件上传的方法
package com.ghpay2.utils;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.ghpay2.UseSmileActivity;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class LogUploader {
public static Option option = new Option();
private static final String TAG = "LogUploader";
// 获取日志文件
public static String getLogs() {
String logcatLogs = "";
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line).append("\n");
}
logcatLogs = log.toString();
} catch (IOException e) {
e.printStackTrace();
}
return logcatLogs;
}
// 上传日志文件
public static void uploadLogs() {
OkHttpClient client = new OkHttpClient();
String logs = getLogs();
new Thread(){
public void run(){
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "logs.txt", RequestBody.create(MediaType.parse("text/plain"), logs))
.build();
Request request = new Request.Builder()
.url(option.BaseUrl + "/common/upload/uploadPayDeviceFile")
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
Log.d(TAG, "Logs uploaded successfully");
} else {
Log.e(TAG, "Failed to upload logs");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}