在改造Android时设置超时?
事实上,我正在通过改造向我的服务器发送一个txt文件,一切正常,如果并没有连接,我甚至可以捕获onFailure方法 但问题是,当我离开Wi-Fi区域,然后发送文件并重新进入Wi-Fi区域时,文件将被发送,但onFailure方法被激活 那么,我如何发送onResponse方法超时之类的消息呢 以下是活动中的我的sendPost方法:在改造Android时设置超时?,android,http,timeout,retrofit,Android,Http,Timeout,Retrofit,事实上,我正在通过改造向我的服务器发送一个txt文件,一切正常,如果并没有连接,我甚至可以捕获onFailure方法 但问题是,当我离开Wi-Fi区域,然后发送文件并重新进入Wi-Fi区域时,文件将被发送,但onFailure方法被激活 那么,我如何发送onResponse方法超时之类的消息呢 以下是活动中的我的sendPost方法: @SuppressLint("DefaultLocale") public void sendPost() { @SuppressLin
@SuppressLint("DefaultLocale")
public void sendPost() {
@SuppressLint({"SdCardPath", "DefaultLocale"}) final File file = new File("/data/data/com.example.igardini.visualposmobile/files/"+String.format("%03d", Integer.valueOf(nTerminalino))+"_"+nTavoli.getText().toString()+".txt");
MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
RequestBody fbody = RequestBody.create(MediaType.parse("text/*"), file); builder.addFormDataPart(String.format("%03d", Integer.valueOf(nTerminalino))+"_"+nTavoli.getText().toString(), file.getName(),fbody);
MultipartBody requestBody = builder.build();
APIService apiService = ApiUtils.getAPIService(ipCASSA);
Call<Void> call = apiService.savePost(requestBody);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
if (response.isSuccessful()) {
Log.i("RESPONSE: ", response.toString());
Print();
file.delete();
dialogLoading.dismiss();
Runtime.getRuntime().gc();
} else {
//
}
}
@Override
public void onFailure(@NonNull Call<Void> call, @NonNull Throwable t) {
Log.e("TAG", t.toString());
MediaPlayer mpFound = MediaPlayer.create(pterm.this,R.raw.errorsound);
mpFound.start();
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (v.hasVibrator()) {
v.vibrate(6000);
} else {
//
}
new GlideToast.makeToast(pterm.this, "CONNESSIONE FALLITA!", GlideToast.LENGTHLONG, GlideToast.FAILTOAST).show();
dialogLoading.dismiss();
}
});
}
下面是客户端类:
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;
}
}
这是一项服务
public interface APIService {
@POST("UPD.aspx?CART=PTERM")
Call<Void> savePost(@Body RequestBody text);
}
公共接口服务{
@POST(“UPD.aspx?CART=PTERM”)
调用savePost(@Body RequestBody text);
}
只需添加如下内容
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("http://10.0.2.2:3000/")
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create());
您也可以查看此链接。查看此链接,它将对您有所帮助。@NileshPanchal这就是工作,谢谢
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.build();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("http://10.0.2.2:3000/")
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create());