猿问

无法向 API Retrofit 提交帖子

实际上,我正在尝试使用 Retrofit 将 txt 文件发送到服务器。但是当我实际尝试发送它时,它从 onFailure 方法中给了我以下错误


我是 android 新手,通过查看一些关于改造的教程,我仍然无法理解我做错了什么,即使我以正确的方式使用改造,如果有人能够帮助我,那就太好了。


E/TAG:无法向 API 提交帖子。


但实际上它是在服务器上创建一个文件夹但不发送文件,我做错了什么?


这是我的 ApiUtils.java


import 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.java


import 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.java


import 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 请求提高改造性能,我将不胜感激。


收到一只叮咚
浏览 116回答 2
2回答

墨色风雨

使用 Void 而不是空类public void sendPost(MultipartBody.Part txt) {mAPIService.savePost(txt).enqueue(new Callback<Void>() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onResponse(Call<Void> call, Response<Void> response) {&nbsp; &nbsp; &nbsp; &nbsp; if(response.isSuccessful()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.i("TAG", "post submitted to API." + response.body().toString());&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onFailure(Call<Void> call, Throwable t) {&nbsp; &nbsp; &nbsp; &nbsp; Log.e("TAG", "Unable to submit post to API.");&nbsp; &nbsp; }});}Request bodyRequestBody fbody = RequestBody.create(MediaType.parse("text/*"), file);&nbsp;builder.addFormDataPart("scontrino", file.getName(),fbody);
随时随地看视频慕课网APP

相关分类

Java
我要回答