我试图使用HttpUrlConnection
为我的请求添加头文件,但是setRequestProperty()
方法似乎不起作用。服务器端不会收到任何带有我的头的请求。
HttpURLConnection hc;
try {
String authorization = "";
URL address = new URL(url);
hc = (HttpURLConnection) address.openConnection();
hc.setDoOutput(true);
hc.setDoInput(true);
hc.setUseCaches(false);
if (username != null && password != null) {
authorization = username + ":" + password;
}
if (authorization != null) {
byte[] encodedBytes;
encodedBytes = Base64.encode(authorization.getBytes(), 0);
authorization = "Basic " + encodedBytes;
hc.setRequestProperty("Authorization", authorization);
}
发布于 2013-03-22 03:00:42
我在过去使用过以下代码,它在TomCat中启用了基本身份验证:
URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();
String userCredentials = "username:password";
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));
myURLConnection.setRequestProperty ("Authorization", basicAuth);
myURLConnection.setRequestMethod("POST");
myURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
myURLConnection.setRequestProperty("Content-Length", "" + postData.getBytes().length);
myURLConnection.setRequestProperty("Content-Language", "en-US");
myURLConnection.setUseCaches(false);
myURLConnection.setDoInput(true);
myURLConnection.setDoOutput(true);
您可以尝试上面的代码。上面的代码是用于POST的,您可以将其修改为GET
发布于 2015-03-17 04:19:16
只是因为我在上面的答案中看不到这一点信息,最初发布的代码片段不能正常工作的原因是因为encodedBytes
变量是byte[]
而不是String
值。如果您将byte[]
传递给new String()
,如下所示,代码片段可以很好地工作。
encodedBytes = Base64.encode(authorization.getBytes(), 0);
authorization = "Basic " + new String(encodedBytes);
发布于 2017-06-07 01:48:34
如果您使用的是Java 8,请使用以下代码。
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
String basicAuth = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));
httpConn.setRequestProperty ("Authorization", "Basic "+basicAuth);
https://stackoverflow.com/questions/12732422
复制相似问题