Android Java Retrofit 重复调用给出 ConnectException
Android Java Retrofit repeating call gives ConnectException
您好,我想在调用完成后再次调用该请求。我是这样做的:
OnContinueUserPing.java
public interface OnContinueUserPing {
void onContinue();
}
GameActivity.java
public class GameActivity extends AppCompatActivity implements OnContinueUserPing {
(...)
@Override
public void onStart() {
restModel.setUserPing(login, this);
}
@Override
public void onContinue() {
restModel.setUserPing(login, this);
}
}
RestModel.java
public void setUserPing(String login, OnContinueUserPing onContinueUserPing) {
Call<String> result = Api.getClient().setUserPing(login);
result.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.e("setUserPingResponse", "a");
onContinueUserPing.onContinue();
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("setUserPingError", t.toString());
call.clone().enqueue(this);
}
});
}
它在开始的几分钟内有效。但后来我只得到:java.net.ConnectException: Failed to connect to MY_URL
我可以补充一点,我将这些呼叫发送到我的 heroku 应用程序(如果这很重要,则免费计划)。
如何解决那些失败的连接?提前致谢!
克隆 call
对象 onFailure
可能会带来一些问题。尝试改变,
call.clone().enqueue(this);
到
onContinueUserPing.onContinue();
Heroku 也可能会拒绝对服务器的连续请求。尝试向 URL 添加一个附加参数,并在每次请求时更改该参数。
int requestCount = 1;
String url = "http://your.domain.url?reqCount=" + requestCount++;
同时,您的方法不是一个好的做法。您应该尝试按设定的时间间隔轮询或使用类似 WebSocket 的东西。
您好,我想在调用完成后再次调用该请求。我是这样做的:
OnContinueUserPing.java
public interface OnContinueUserPing {
void onContinue();
}
GameActivity.java
public class GameActivity extends AppCompatActivity implements OnContinueUserPing {
(...)
@Override
public void onStart() {
restModel.setUserPing(login, this);
}
@Override
public void onContinue() {
restModel.setUserPing(login, this);
}
}
RestModel.java
public void setUserPing(String login, OnContinueUserPing onContinueUserPing) {
Call<String> result = Api.getClient().setUserPing(login);
result.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.e("setUserPingResponse", "a");
onContinueUserPing.onContinue();
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("setUserPingError", t.toString());
call.clone().enqueue(this);
}
});
}
它在开始的几分钟内有效。但后来我只得到:java.net.ConnectException: Failed to connect to MY_URL
我可以补充一点,我将这些呼叫发送到我的 heroku 应用程序(如果这很重要,则免费计划)。
如何解决那些失败的连接?提前致谢!
克隆 call
对象 onFailure
可能会带来一些问题。尝试改变,
call.clone().enqueue(this);
到
onContinueUserPing.onContinue();
Heroku 也可能会拒绝对服务器的连续请求。尝试向 URL 添加一个附加参数,并在每次请求时更改该参数。
int requestCount = 1;
String url = "http://your.domain.url?reqCount=" + requestCount++;
同时,您的方法不是一个好的做法。您应该尝试按设定的时间间隔轮询或使用类似 WebSocket 的东西。