Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 在Amazon SDK上使用NTLM身份验证配置代理设置时出现问题_Java_Proxy_Amazon Ec2_Cloud - Fatal编程技术网

Java 在Amazon SDK上使用NTLM身份验证配置代理设置时出现问题

Java 在Amazon SDK上使用NTLM身份验证配置代理设置时出现问题,java,proxy,amazon-ec2,cloud,Java,Proxy,Amazon Ec2,Cloud,我正在使用AmazonSDK1.5.6,并尝试使用代理服务器初始化连接。 初始化成功,但当我尝试使用AmazonEC2Client时,失败如下 错误: 捕获异常:状态代码:407,AWS服务:AmazonEC2,AWS 请求ID:null,AWS错误代码:407未经授权,AWS错误消息: 无法解组错误响应(文件过早结束。)响应 状态代码:407错误代码:407未经授权的请求ID:null 初始化代码: protected AmazonEC2 initAmazonSDKClient(String

我正在使用AmazonSDK1.5.6,并尝试使用代理服务器初始化连接。 初始化成功,但当我尝试使用
AmazonEC2Client
时,失败如下 错误:

捕获异常:状态代码:407,AWS服务:AmazonEC2,AWS 请求ID:null,AWS错误代码:407未经授权,AWS错误消息: 无法解组错误响应(文件过早结束。)响应 状态代码:407错误代码:407未经授权的请求ID:null

初始化代码:

protected AmazonEC2 initAmazonSDKClient(String endpoint) {

        AWSCredentials awsCredentials =
                new BasicAWSCredentials(_account.getAccessKey(), _account.getSecretKey());
        ClientConfiguration config = getProxySettings();
        AmazonEC2 ret = CloudServicesEC2Api.getAmazonEC2Client(awsCredentials, config);
        ret.setEndpoint(endpoint);
        _endPointToAmazonEC2Client.put(endpoint, ret);

        return ret;
    }

private ClientConfiguration getProxySettings() {

        ClientConfiguration ret = new ClientConfiguration();
        String host = _proxySettings.getServer();
        if (!StringUtils.isNullOrEmpty(host )) {
            ret.setProxyHost(host );
        }
        if (!StringUtils.isNullOrEmpty(_proxySettings.getPort())) {
            ret.setProxyPort(Integer.valueOf(_proxySettings.getPort()));
        }
        String proxyUserName = _proxySettings.getUserName();
        if (!StringUtils.isNullOrEmpty(proxyUserName)) {
            ret.setProxyUsername(proxyUserName);
        }
        String proxyPassword = _proxySettings.getPassword();
        if (!StringUtils.isNullOrEmpty(proxyPassword)) {
            ret.setProxyPassword(proxyPassword);
        }
        ret.setProxyWorkstation(host );
        ret.setProxyDomain(host );

        return ret;
    }
使用客户端并导致错误的代码:

private List<InstanceStatus> getStatusChecks(AmazonEC2 ec2Client, String[] hostIds) {

        DescribeInstanceStatusRequest describeInstanceRequest =
                new DescribeInstanceStatusRequest().withInstanceIds(hostIds);
        DescribeInstanceStatusResult describeInstanceResult =
                ec2Client.describeInstanceStatus(describeInstanceRequest);

        return describeInstanceResult.getInstanceStatuses();
    }
我已经尝试了workstation&domain的多个版本,我尝试将其留白,没有用


请告知

经过一些研究,Amazon SDK处理NTLM代理请求的方式出现了一些问题。我们比较了传递给连接成功的其他库(例如JClouds)的代理参数,并尝试在AmazonSDK上应用相同的代理参数,但没有成功。 我们甚至用wireshark比较了数据包,一切都是一样的。这个图书馆有点不对劲

ret.setProxyWorkstation(host );
ret.setProxyDomain(host );