URL 验证工作正常,但保持连接并限制任何进一步的请求


public class UrlVarificationTask extends AsyncTask<Void, Void, Integer> {
    private String url;
    private UrlVarificationDelegate delegate;
    private HttpURLConnection huc;
    public UrlVarificationTask(String url, UrlVarificationDelegate delegate) {
        this.url = url;
        this.delegate = delegate;
    }
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected Integer doInBackground(Void... params) {
        int responseCode = 0;
        try {
            System.setProperty("http.keepAlive", "false");
            URL u = new URL(url);
            huc = (HttpURLConnection) u.openConnection();
            huc.setRequestMethod("HEAD");
            huc.connect();
            responseCode = huc.getResponseCode();
        } catch (MalformedURLException mal) {
            responseCode = -555;
        } catch (IOException io) {
            responseCode = -444;
        } catch (Exception ex) {
            responseCode = -333;
            ex.printStackTrace();
        }
        if (huc != null) {
            try {
                huc.getInputStream().close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            huc.disconnect();
        }
        Logger.debug("Response Code==" + responseCode);
        return responseCode;
    }
    @Override
    protected void onPostExecute(Integer responseCode) {
        delegate.urlVarificationResponseCode(responseCode);
        super.onPostExecute(responseCode);
    }
}

我使用上面的dode来验证url,

如果 HEAD 给我响应代码 200,那么只有我打开一个指向 webview 的 URL。

但是一旦我称之为保持连接并且即使在关闭后也不允许任何其他 http 请求,该怎么办?

安全使用 HttpURL Connection

huc.setRequestProperty("keep-alive", "false");

这是作为 HttpURLConnection 保持连接活动,因此我们无法发出进一步的请求,因此保持活动设置以错误地解决此问题。

要正确关闭HttpURLConnection请转到链接

通过此 URL 被关闭。

相关内容

最新更新