实际上,我正在尝试使用 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);
添加回答
举报
0/150
提交
取消