我正在从事一个Android项目,该项目使用Volley进行异步请求和图像缓存。即使重试策略设置为0,请求也会两次命中服务器。我尝试重写DefaultRetryPolicy对象中的值,但没有成功。下面是一些示例代码:
请求:
@Override
public void gravarVendaMobile(final Usuario usuarioAutenticado, final AsyncCallback<String> callback) {
obterParametrosDeInicializacao().done(new DoneCallback<ParametrosDeInicializacao>() {
@Override
public void onDone(final ParametrosDeInicializacao param) {
requestQueue.add(setDefaultRetryPolicy(new StringRequest(
Method.POST,
urlPara(GRAVAR_VENDA_MOBILE, usuarioAutenticado.getFilial(), usuarioAutenticado.getCodigo()),
listener(callback),
//errorListener(R.string.could_not_load_produtos, callback)
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onError(new MessageCodeException(error.networkResponse.statusCode, error));
}
}
) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Encoding", "UTF-8");
headers.put("Accept", "application/json");
headers.put("Content-type", "application/json; charset=UTF-8");
return headers;
}
}));
}
});
}
重试政策:
private Request<?> setDefaultRetryPolicy(Request<?> request) {
request.setRetryPolicy(new DefaultRetryPolicy(30000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
return request;
}
基本上,我想将超时设置为30秒,并重试0次。
如果我增加重试次数,它将按预期工作,但如果我将其设置为0,它将发出2个请求。
这里需要帮助。
编辑
我通过在android内部将keep-alive属性设置为false来解决我的问题。如:
System.setProperty("http.keepAlive", "false");
我在类中添加了这行代码,在那里我导入请求队列并发出请求。
此外,请检查服务器是否具有保活报头。
这篇文章有助于解决问题。
只需将超时设置为20秒或更长,然后重试0
req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
我使用此设置不重复策略:
myRequest.setRetryPolicy(new DefaultRetryPolicy(0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
DefaultRetryPolicy。类的hasAttemptRemaining()类如下所示:
protected boolean hasAttemptRemaining() {
return this.mCurrentRetryCount <= this.mMaxNumRetries;
}
从我所看到的情况来看,如果maxNumRetries设置为0,那么如果它还没有重试,那么它仍然会返回true。
我用螺丝钉把它修好了
request.setRetryPolicy(new DefaultRetryPolicy(0, -1, 0);
像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。
我有广播接收器 但是服务不启动,当我启动我的设备日志log.d(“test”,“start”);不要显示我如何修复它?
目前,我有一个变量来指示标记刷新是否在中进行,在这种情况下,我取消中的所有后续请求,用户必须手动刷新页面,否则我可以注销用户并强制用户登录。 对于上述问题,使用OKHTTP3.x for Android有什么好的解决方案或架构? 编辑:我想解决的问题是一般的,我不想顺序我的电话。也就是说,等待一个调用完成并刷新令牌,然后只在活动和片段级别上发送请求的其余部分。
问题内容: 当我在Node服务器上打印请求的内容时,在任何地方都看不到用户数据。 这是我的节点服务器: 这是Angular2代码: 任何人都可以帮我或解释如何处理角度的http请求。 问题答案: 那是你的服务器: 那是您的有角度的客户: 回购https://github.com/kuncevic/angular-httpclient- examples
XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理
创建 Yubikey PAM 验证策略 获取 YubiKey 的令牌 ID Yubikey 令牌 ID 是唯一标识 YubiKey 的公共标识符。您可以通过多种方式获取 Yubikey 令牌ID。 最简单的方法是移除 Yubikey 生成的一次性密码的最后 32 位: 打开一个终端. 长按 Yubikey. 一个一次性密码会输入到终端中: ❯ cccccccgklgcvnkcvnnegrnhgrj