当前位置: 首页 > 知识库问答 >
问题:

如何在android中使用retrofit设置计时器在android中使用retrofit2[重复]

宗政金鹏
2023-03-14

有人能帮我用改型设置超时吗。

String url = "xxxxxx";
Retrofit retrofit = null;
Log.d("123", "retrofit");

if (retrofit == null) {
    retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();
    Log.d("123", "build();");
}

final ProgressDialog dialog = new ProgressDialog(LoginActivity.this);
dialog.setMessage("Authenticating...." + 30000 / 1000 + " Second(s)");
dialog.setIndeterminate(false);

new CountDownTimer(30000, 1000) {

    public void onTick(long millisUntilFinished) {
        // You don't need anything here
        dialog.setMessage("Authenticating....");
        if (!dialog.isShowing()) dialog.show();
    }

    public void onFinish() {
        if (dialog.isShowing()) dialog.dismiss();
    }
}.start();

API1 service = retrofit.create(API1.class);
Call<Login> call = service.authenticate(emailId, password);
Log.i(TAG, "Sending---" + url + service + url + "\n" + "emailId:" + emailId + "\n" + "password:" + password);

call.enqueue(new Callback<Login>() {

    @Override
    public void onResponse(Call<Login> call, Response<Login> response) {

        if (response != null && response.isSuccessful() && response.code() == 200) {
            String status = response.body().getStatus().toString();
            Log.i(status, "success");
            if (status.equals("success")) {
                // dialog.dismiss();
                Toast.makeText(LoginActivity.this, "Login successfully", Toast.LENGTH_SHORT).show();
                Intent mainIntent;
                mainIntent = new Intent(LoginActivity.this, DeviceControlActivity.class);
                startActivity(mainIntent);
                finish();
            } else {
                Toast.makeText(LoginActivity.this, "No Response from the server", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(LoginActivity.this, "Invalid EmailId and password", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onFailure(Call<Login> call, Throwable t) {
        // Toast.makeText(LoginActivity.this, "Some error occurred -> ", Toast.LENGTH_LONG).show();;
        // dialog.dismiss();
    }
});

共有1个答案

江正德
2023-03-14

您可以使用OKHTTP设置读取和连接超时。

您需要在build.gradle中添加依赖项

实现'com.squareup.okhttp3:okhttp:3.12.1'

OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
        .connectTimeout(40, TimeUnit.SECONDS)
        .readTimeout(60, TimeUnit.SECONDS)
        .writeTimeout(60, TimeUnit.SECONDS)
        .build();

Retrofit retrofit = new Retrofit.Builder()
        .client(okHttpClient)
        .baseUrl(Constants.WEB_SERVICE)
        .addConverterFactory(GsonConverterFactory.create(gson))
        .build();
 类似资料:
  • 我正在尝试用相机运行时拍摄的一张图像发布。如何在android中使用改造发布图像。这是我的界面 我用来上传图片和其他细节的代码 输出-onFailure:JSON必须以数组或对象开头。 我不知道这是对还是错。请帮助我发布一些图片以及使用Reformat2 beta 3的其他详细信息。

  • 问题内容: 这是我的第一篇文章.. 因此,我正在学习Android和Java(来自Actionscript),并且正在从事以下项目: 我试图单击一个ImageView,让该ImageView交换图像一秒钟,然后返回到原始图像。(这是针对窃听游戏的) 听起来很容易,对吧?我花了整整一天的时间试图让一个标准的Java Timer / TimerTask工作..没有运气.. 有没有更好的办法?我的意思是

  • Hi plan to development and android countdown timer app for the activity with start and stop button when user click start button display timer countdown and user go to remaining activities when the tim

  • 我使用Android Studio,我想在低于21的API中使用材料设计功能。首先,我读了这些问题: 如何在eclipse中使用api低于21的材质设计特性? 我希望在日食中采用5.0之前的材质设计设备 Android设计支持库和材质设计向后兼容? 我还阅读了以下内容: https://developer . Android . com/training/material/compatibilit

  • 在eclipse中,您可以使用以下命令为模拟器设置GPS位置: 选择窗口 在模拟器控制面板中,在位置控制下输入GPS坐标作为单独的经纬度坐标,并使用GPX文件进行路线回放,或使用KML文件进行多个地点标记。(确保您在“设备”面板中选择了一个设备——可从窗口访问 这在Android Studio可能吗?

  • 我想通过编程方式设置视图的边距,我应该为设置50dp,我使用此代码 但在这段代码中,设置为50px!我怎么能设置这个50dp,而不是px?!