我正在尝试使用此代码在运行某些测试之前从数据库中删除用户:
URL url = new URL("someurl/remove?user=user001@mailinator.com");
HttpURLConnection huc = (HttpURLConnection)url.openConnection();
String userPassword = "is:IS!";
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
huc.setRequestMethod("GET");
huc.setRequestProperty("Authorization", "Basic " + encoding);
huc.connect();
它对我不起作用(user001
仍然存在于数据库中)。但是如果我使用.getResponseCode()
代替.connect()
,一切正常。为什么呢?
答案 0 :(得分:2)
因为当你打电话
huc.connect();
你实际上并没有调用网址。您只是打开与服务器的连接。通常你不应该调用那个方法,因为当你调用类似
之类的东西时会调用它getInputStream(), getResponseCode(), or getResponseMessage()
答案 1 :(得分:1)
在HttpURLConnection的sun.net.www.protocol.http.HttpURLConnection实现中,connect()本身并不实际发送请求(包括authenticate,handle re-directs等)。这需要调用getInputStream(),这可能会在以后发生。
如果尚未调用getResponseCode,则调用getInputStream。