Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP错误代码:400_Java_Rest_Http Headers - Fatal编程技术网

Java HTTP错误代码:400

Java HTTP错误代码:400,java,rest,http-headers,Java,Rest,Http Headers,我正在尝试从RESTURL下载一个文件。这是我使用的代码 byte[] plainCredsBytes ="mytoken".getBytes(); byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); String base64Creds = new String(base64CredsBytes); URL url = new URL("https://api.xxxxx.com/files/62645/6hSFcVs

我正在尝试从RESTURL下载一个文件。这是我使用的代码

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:失败:HTTP错误代码: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{消息:需要身份验证}


有什么帮助吗

我收到了400个错误的请求,因为我调用的服务验证了我的身份验证,并将其重定向到一个不需要身份验证的amazon服务,因此它对请求进行了投诉

我必须禁用follow重定向并获取位置,然后发送另一个请求以获取文件

conn.setInstanceFollowRedirects(false);
实际上,上面我为poc做的程序,我的实际客户机使用的是SpringREST模板。ClientHttpRequestFactory的默认实现没有为GET设置InstanceFollowreDirectStrue,因此我必须创建一个自定义ClientHttpRequestFactory

public class CustomClientHttpRequestFactory extends SimpleClientHttpRequestFactory {

@Override
protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException {
    .....
}

}

如何设置base64Creds变量?你能发布那个代码吗?@user2953113修改了包含它的代码。这有助于尝试用户名+:+密码。字符串userCred=用户名+:+密码;字符串encodedAuthorization=Base64.encodeBase64userCred.getBytes;@user2953113我尝试使用用户名:password它不起作用