【发布时间】:2015-12-23 15:04:25
【问题描述】:
我正在尝试从 REST url 下载文件。这是我使用的代码
byte[] plainCredsBytes ="mytoken".getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
URL url = new URL("https://api.xxxxx.com/files/62645/6hSFcVs3qIbvrGdXOfYzXQ/Test.png");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "text/plain; charset=utf-8");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Authorization", "Basic " + base64Creds);
我收到 java.lang.RuntimeException: Failed : HTTP error code : 400
我试图从响应中获取更多详细信息,这里是
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidArgument</Code>
<Message>Only one auth mechanism allowed; only the X-Amz-Algorithm query parameter, Signature query string parameter or the Authorization header should be specified</Message>
<ArgumentName>Authorization</ArgumentName>
<ArgumentValue>Basic M2U3YzMzODU3NmY3ZjgwNzY2OWU5Yzg5NDg0Y2Y3Mzc= </ArgumentValue>
<RequestId>7BDEA0EBE74A63FF</RequestId>
<HostId>qU+xjS3nRcTbyBHPZyM89tGZC46sa9XzhkDLPD+p4oOSQc1UF9vSnpqB7A6Mlp5s76iqCOY2n+0=</HostId>
</Error>
我正在传递基本授权凭据,如果我删除它,我会得到
HTTP 错误代码:401 {"message":"Requires authentication"}
有什么帮助吗?
【问题讨论】:
-
如何设置 base64Creds 变量?你能发布那个代码吗?
-
@user2953113 修改代码以包含它
-
试试用户名+“:”+密码。字符串 userCred = 用户名 + ":" + 密码;字符串编码授权 = Base64.encodeBase64(userCred.getBytes());
-
@user2953113 我尝试使用用户名:密码它不起作用
标签: java rest http-headers