gpt4 book ai didi

android - 改造。 java.net.协议(protocol)异常 : expected * bytes but received *

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:27 27 4
gpt4 key购买 nike

我正在尝试通过 Retrofit2 执行多部分 POST 请求,我在其中将自定义文件上传到 API。

它随机失败并出现此异常:

W/System.err: java.net.ProtocolException: expected 154 bytes but received 634

有人能解释一下吗?

这是我在界面中的代码:

@Multipart
@POST("recordings/{id}/{rec_id}/")
Call<ResponseBody> uploadRecording(@Path("id") String id, @Path("rec_id") String rec_id, @Part MultipartBody.Part bleFile);

在构造函数中:

public ApiConnectionManager(Context con){
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();

OkHttpClient.Builder client = new OkHttpClient.Builder();
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.addInterceptor(loggingInterceptor);

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(con.getResources().getString(R.string.api_url)) // API url is hidden
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client.build())
.build();

this.companyAPI = retrofit.create(CompanyAPI.class);
}

在上传方法中:

private void uploadFile(String id, final File bleFile) {
MediaType MEDIA_TYPE = MediaType.parse("multipart/mixed");
RequestBody requestBody = RequestBody.create(MEDIA_TYPE,bleFile);
MultipartBody.Part partFile = MultipartBody.Part.createFormData("file", bleFile.getName(), requestBody);
String recordingId = bleFile.getName().replace(".BLE","");
Call<ResponseBody> call = companyAPI.uploadRecording(id, recordingId, partFile);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.d(TAG+"-Upload "+bleFile.getName(),response.message());
}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d(TAG,"FAILED");
t.printStackTrace();
}
});
}

最佳答案

经过一段时间的研究,我意识到文件的内容一直在变化(因为它是传感器的输出)。

这意味着检查 HEAD 的文件和检查 BODY 的文件可能包含不同的数据(因此长度不同),从而导致不匹配。

我解决了这个 creating a copy文件并发送它(副本)而不是原始文件。

关于android - 改造。 java.net.协议(protocol)异常 : expected * bytes but received *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845883/

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