为了账号安全,请及时绑定邮箱和手机立即绑定

无法向 API Retrofit 提交帖子

无法向 API Retrofit 提交帖子

收到一只叮咚 2021-06-01 13:12:37
实际上,我正在尝试使用 Retrofit 将 txt 文件发送到服务器。但是当我实际尝试发送它时,它从 onFailure 方法中给了我以下错误我是 android 新手,通过查看一些关于改造的教程,我仍然无法理解我做错了什么,即使我以正确的方式使用改造,如果有人能够帮助我,那就太好了。E/TAG:无法向 API 提交帖子。但实际上它是在服务器上创建一个文件夹但不发送文件,我做错了什么?这是我的 ApiUtils.javaimport okhttp3.RequestBody;import retrofit2.Call;import retrofit2.http.Body;import retrofit2.http.POST;public interface APIService {    @POST("UPD.aspx?CART=PTERM")    Call<MyResponse> savePost(@Body RequestBody text);}这是 RetrofitClient.javaimport retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitClient {    private static Retrofit retrofit = null;    public static Retrofit getClient(String baseUrl) {        if (retrofit==null) {            retrofit = new Retrofit.Builder()                    .baseUrl(baseUrl)                    .addConverterFactory(GsonConverterFactory.create())                    .build();        }        return retrofit;    }}这是 APIService.javaimport okhttp3.MultipartBody;import retrofit2.Call;import retrofit2.http.Multipart;import retrofit2.http.POST;import retrofit2.http.Part;public interface APIService {    @Multipart    @POST("UPD.aspx?CART=PTERM")    Call<Void> savePost(@Part MultipartBody.Part text);}这是我用来通过 onClick 发送文件的 sendPost() 方法public void sendPost() {    File file = new File("/data/data/com.example.igardini.visualposmobile/files/scontrino.txt");    MultipartBody.Builder builder = new MultipartBody.Builder();    builder.setType(MultipartBody.FORM);    builder.addFormDataPart("scontrino", file.getName());    MultipartBody requestBody = builder.build();    APIService apiService = ApiUtils.getAPIService();    Call<Void> call = apiService.savePost(requestBody);    call.enqueue(new Callback<Void>() {        @Override        public void onResponse(Call<Void> call, Response<Void> response) {            if (response.isSuccessful()) {            } else {            }        }如果有人建议我如何通过 http 请求提高改造性能,我将不胜感激。
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

使用 Void 而不是空类


public void sendPost(MultipartBody.Part txt) {

mAPIService.savePost(txt).enqueue(new Callback<Void>() {

    @Override

    public void onResponse(Call<Void> call, Response<Void> response) {


        if(response.isSuccessful()) {

            Log.i("TAG", "post submitted to API." + response.body().toString());

        }

    }


    @Override

    public void onFailure(Call<Void> call, Throwable t) {

        Log.e("TAG", "Unable to submit post to API.");

    }

});

}

Request body


RequestBody fbody = RequestBody.create(MediaType.parse("text/*"), file); 

builder.addFormDataPart("scontrino", file.getName(),fbody);


查看完整回答
反对 回复 2021-06-02
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信