square / retrofit

A type-safe HTTP client for Android and the JVM
https://square.github.io/retrofit/
Apache License 2.0
43.04k stars 7.31k forks source link

rx.exceptions.OnErrorThrowable$OnNextValue #2289

Closed gewuxy closed 7 years ago

gewuxy commented 7 years ago

I use rxjava and retrofit to send audio file after recording,but sometimes server reports that audio file broken,the log is: rx.exceptions.OnErrorThrowable$OnNextValue OnError while emitting onNext value: com.lizhiweike.network.HttpResult.class `

compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'

File file = new File(path);
RequestBody requestFile = RequestBody.create(MediaType.parse("audio/*"), file);
body = MultipartBody.Part.createFormData("audio_file", file.getName(), requestFile);

HashMap<String,RequestBody> params = new HashMap<>();
params.put("lecture_id",RequestBody.create(MediaType.parse("multipart/form-data"), mId + ""));
params.put("need_encode",RequestBody.create(MediaType.parse("multipart/form-data"), String.valueOf(false)));
params.put("duration",RequestBody.create(MediaType.parse("multipart/form-data"),attachment.getDuration() + ""));

Subscription subscription = ApiService.getInstance().sendAudioMessage(body,params).subscribe(new HttpObserver<IMMessage>() {
    @Override
    protected void onError(ApiException ex) {
        CrashReport.postCatchedException(ex);
        ToastUtil.showToast(getActivity(),ex.getMsg());
        onSendMessageFail(msg);
    }

    @Override
    public void onNext(IMMessage imMessage) {
        onSendMessageSuccess(msg);
    }
});
mCompositeSubscription.add(subscription);

`

gewuxy commented 7 years ago

I have submit it to rxjava,but they think it is retrofit issue https://github.com/ReactiveX/RxJava/issues/5293

gewuxy commented 7 years ago

anyone help?

lumenghz commented 7 years ago

@gewuxy Maybe you should post your question in stackoverflow tagged with retrofit. This is not Retrofit's issue

JakeWharton commented 7 years ago

Please provide a failing test case. Bug reports with tests get fixed. Here’s an example: https://gist.github.com/swankjesse/6608b4713ad80988cdc9. Closing for now.