dns劫持 - Android用XUtils下载apk文件被运营商劫持,如何处理.

【字号: 日期:2022-11-23浏览:23作者:雯心

问题描述

https://support.qiniu.com/hc/...七牛提供的解决方法,但是项目中应用次方法局限性太大.遂问还有其他的解决方法吗?

//自己解决了自己替换掉xutils的重定向handler

public class NoHttpRedirectHandler implements HttpRedirectHandler { private String url; public NoHttpRedirectHandler(String url) {this.url=url; } public HttpRequestBase getDirectRequest(HttpResponse response) {if(response.containsHeader('Location')) { HttpGet request = new HttpGet(url); MGLog.e('upgrade','可恶,但是已经阻止了重定向!'); if(response.containsHeader('Set-Cookie')) {String cookie = response.getFirstHeader('Set-Cookie').getValue();request.addHeader('Cookie', cookie); } return request;} else { return null;} }}

实际使用:

HttpManagerX.getHttpUtils().configHttpRedirectHandler(new NoHttpRedirectHandler(url)).download(url, target, true, newRequestCallBack<File>(){...}

当被重定向到其他的url时,我们把重定向的url替换为我们原来的.

问题解答

回答1:

自己替换掉xutils的重定向handler

public class NoHttpRedirectHandler implements HttpRedirectHandler { private String url; public NoHttpRedirectHandler(String url) {this.url=url; } public HttpRequestBase getDirectRequest(HttpResponse response) {if(response.containsHeader('Location')) { HttpGet request = new HttpGet(url); MGLog.e('upgrade','可恶,但是已经阻止了重定向!'); if(response.containsHeader('Set-Cookie')) {String cookie = response.getFirstHeader('Set-Cookie').getValue();request.addHeader('Cookie', cookie); } return request;} else { return null;} }}

实际使用:

HttpManagerX.getHttpUtils().configHttpRedirectHandler(new NoHttpRedirectHandler(url)).download(url, target, true, newRequestCallBack<File>(){...}

当被重定向到其他的url时,我们把重定向的url替换为我们原来的.

回答2:

走https

回答3:

http就是有这种缺陷,走https加密,可以搞个自签名证书先用着。

回答4:

https,你直接禁止重定向虽然表面解决了此次问题,但是如果你的下载链接本身就有重定向动作,你就下载不下来了

相关文章: