gpt4 book ai didi

java - 使用 Retrofit android 进行 Curl

转载 作者:行者123 更新时间:2023-12-02 09:22:25 25 4
gpt4 key购买 nike

我使用curl -F datafile="@myIMage.png"http://www.myUrl.com/tools/index.php/testUpload/do_upload 将图像上传到服务器我必须使用 android 中的 http 调用来复制此上传,我正在使用改造,这是我的代码:

public static class NetworkClient {
private static final String BASE_URL = "http://myUrl.com/tools/index.php/";
private static Retrofit retrofit;

public static Retrofit getRetrofitClient(Context context) {
if (retrofit == null) {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.build();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}

public interface UploadAPIs {
@Multipart
@POST("/testUpload/do_upload")
retrofit2.Call<SimpleAdapter> uploadImage(@Part MultipartBody.Part file, @Part("datafile") RequestBody requestBody);
}

upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Retrofit retrofit = NetworkClient.getRetrofitClient(getApplicationContext());
UploadAPIs uploadAPIs = retrofit.create(UploadAPIs.class);

File file = new File(path); // the path where is stored the image

RequestBody fileReqBody = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part part = MultipartBody.Part.createFormData("datafile", "@"+file.getName(), fileReqBody);
RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "image-type");

final retrofit2.Call call = uploadAPIs.uploadImage(part, description);

call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Log.d("SICC", String.valueOf(call.request()));
}

@Override
public void onFailure(Call call, Throwable t) {
Log.d("FAIL", t.toString());
}
});
}
});
}

但是这样我就无法将照片发布到我的服务器上,有什么建议吗?

最佳答案

你的API服务类

@POST("/testUpload/do_upload")
@Multipart
Call<SimpleAdapter> uploadImage(@PartMap Map<String, RequestBody> map);

为你的 HashMap 赋值

 HashMap hashMap = new HashMap<String, RequestBody>();
RequestBody fileReqBody = RequestBody.create(
MediaType.parse("multipart/form-data"), new File(path));
hashMap.put("datafile\"; filename=\"image_"
+ System.currentTimeMillis()
+".jpeg\"", fileReqBody);

调用api方法

Retrofit retrofit = NetworkClient.getRetrofitClient(getApplicationContext());
UploadAPIs uploadAPIs = retrofit.create(UploadAPIs.class);

final retrofit2.Call call = uploadAPIs.uploadImage(hashMap);

call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Log.d("SICC", String.valueOf(call.request()));
}

@Override
public void onFailure(Call call, Throwable t) {
Log.d("FAIL", t.toString());
}
});

关于java - 使用 Retrofit android 进行 Curl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com