Retrofit2 error java.io.EOFException: End of input at line 1 column 1
just return void instead, if the body is empty
@PATCH("alerts/{alert_id}/accept") Call<Void> accept_invited_alerts(@Header("X-Api-Token") String api_token, @Path("alert_id") int alert_id);
for retrofit with Rx java you can use something like this
@PATCH("alerts/{alert_id}/accept") Observable<Response<Void>> accept_invited_alerts(@Header("X-Api-Token") String api_token, @Path("alert_id") int alert_id);
EDIT: For kotlin
@PATCH("alerts/{alert_id}/accept")fun accept_invited_alerts(@Header("X-Api-Token") api_token: String, @Path("alert_id") alert_id: Int): Call<Unit>
and
@PATCH("alerts/{alert_id}/accept")fun accept_invited_alerts(@Header("X-Api-Token") api_token: String, @Path("alert_id") alert_id: Int): Observable<Response<Unit>>
You can create NullOnEmptyConverterFactory.class :
import java.io.IOException;import java.lang.annotation.Annotation;import java.lang.reflect.Type;import okhttp3.ResponseBody;import retrofit2.Converter;import retrofit2.Retrofit;public class NullOnEmptyConverterFactory extends Converter.Factory { @Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { final Converter<ResponseBody, ?> delegate = retrofit.nextResponseBodyConverter(this, type, annotations); return new Converter<ResponseBody, Object>() { @Override public Object convert(ResponseBody body) throws IOException { if (body.contentLength() == 0) return null; return delegate.convert(body); } }; }}
and add to code create. For ex:
UploadImageNghiemThuApi uploadService = new Retrofit.Builder() .baseUrl(Config.URL+"/") .client(okHttpClient) // -----add here------- .addConverterFactory(new NullOnEmptyConverterFactory()) //--------------------- .addConverterFactory(GsonConverterFactory.create()) .build() .create(UploadImageNghiemThuApi.class);
I hope it can help your problem.Thanks!
Thank you very much.
Api
@FormUrlEncoded@POST("/rebu/insertusuario.php")Call<Void> insertLogin( @Field("email") String email, @Field("senha") String senha, @Field("codCondutor") Long codCondutor);
Class:
Call call = service.insertLogin(login.getEmail(), login.getSenha(), login.getCodCondutor());