gpt4 book ai didi

java - 使用 Multipart 上传文件时 Retrofit2 抛出 ConnectionShutdownException 错误

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

我正在使用 Retrofit2 库来处理 http 请求。它工作完美,除非我尝试使用多部分上传图像。我正在从图库中选择一张图像并成功设置 ImageView 的 imageUri 。然后,我将从图像选择器获取的图像 uri 声明一个文件并上传(根据 Youtube 上的一些教程)。

这是我的Retrofit界面

@Multipart
@POST("fm/upload.php")
Call<ResponseBody> callServerUrlSubmitNewOrderWithFiles(
@Part MultipartBody.Part photo);

这是我的http调用函数(imageUri)是从图像选择器获取的图像uri:

File originalFile = new File(image1Uri.getPath());

RequestBody filePart = RequestBody.create(

MediaType.parse(getContentResolver().getType(image1Uri)),
originalFile
);

//wrapping the file
MultipartBody.Part file =
MultipartBody.Part.createFormData("photo",
originalFile.getName(),
filePart);


//create retro instance
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://mywebsite.net/")
.addConverterFactory(GsonConverterFactory.create());

Retrofit retrofit = builder.build();

//get client & call object for the request
RetroFit2Calls client = retrofit.create(RetroFit2Calls.class);

//finally, execute the request
Call<ResponseBody> call =
client.callServerUrlSubmitNewOrderWithFiles(file);

call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call,
Response<ResponseBody> response) {
Log.e(TAG, "onResponse: Uploaded"+ response.message()
);

}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t)
{
Log.e(TAG, "onFailure: ",t );

}
});

我收到以下错误(onFailure):

E/SubmitRequest: onFailure: 
okhttp3.internal.http2.ConnectionShutdownException
at okhttp3.internal.http2.Http2Connection.newStream(Http2Connection.java:248)
at okhttp3.internal.http2.Http2Connection.newStream(Http2Connection.java:231)
at okhttp3.internal.http2.Http2Codec.writeRequestHeaders(Http2Codec.java:117)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:50)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)

...

这是 list 权限:

   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

最佳答案

在这里找到了解决方案: https://stackoverflow.com/a/43714729/5157228

我缺少权限请求。

关于java - 使用 Multipart 上传文件时 Retrofit2 抛出 ConnectionShutdownException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58475313/

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