首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正在为HttpURLConnection添加标头

正在为HttpURLConnection添加标头
EN

Stack Overflow用户
提问于 2012-10-05 01:20:30
回答 7查看 443.8K关注 0票数 294

我试图使用HttpUrlConnection为我的请求添加头文件,但是setRequestProperty()方法似乎不起作用。服务器端不会收到任何带有我的头的请求。

代码语言:javascript
复制
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);
        }
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-22 03:00:42

我在过去使用过以下代码,它在TomCat中启用了基本身份验证:

代码语言:javascript
复制
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

票数 477
EN

Stack Overflow用户

发布于 2015-03-17 04:19:16

只是因为我在上面的答案中看不到这一点信息,最初发布的代码片段不能正常工作的原因是因为encodedBytes变量是byte[]而不是String值。如果您将byte[]传递给new String(),如下所示,代码片段可以很好地工作。

代码语言:javascript
复制
encodedBytes = Base64.encode(authorization.getBytes(), 0);
authorization = "Basic " + new String(encodedBytes);
票数 18
EN

Stack Overflow用户

发布于 2017-06-07 01:48:34

如果您使用的是Java 8,请使用以下代码。

代码语言:javascript
复制
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;

String basicAuth = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));
httpConn.setRequestProperty ("Authorization", "Basic "+basicAuth);
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12732422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档