【发布时间】:2020-11-12 02:49:52
【问题描述】:
我正在尝试通过网络代理使用 azure sdk for java API 列出 azure data Lake Gen 2 容器中的文件,但每次都会出现连接超时错误。遵循 azure 网站本身的示例代码。
示例代码链接::https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-java
代码
public void connectToAzureDataLake() {
String endpoint = "endPoint_URL";
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId("clientId")
.clientSecret("clientSecret")
.tenantId("tenantId")
.build();
int proxyPort = 1111;
HttpClient httpClient = new NettyAsyncHttpClientBuilder()
.proxy(new ProxyOptions(ProxyOptions.Type.HTTP,
new InetSocketAddress("proxyURL", proxyPort))
.setCredentials("proxyUsername", "proxyPassword")).build();
DataLakeServiceClientBuilder builder = new DataLakeServiceClientBuilder();
DataLakeServiceClient dataLakeServiceClient = builder.credential(clientSecretCredential)
.endpoint(endpoint).httpClient(httpClient).buildClient();
DataLakeFileSystemClient dataLakeFileSystemClient = new DataLakeFileSystemClientBuilder()
.endpoint(endpoint + "/file_system_name")
.credential(clientSecretCredential)
.buildClient();
listFilesInDirectory(dataLakeFileSystemClient);
}
private void listFilesInDirectory(DataLakeFileSystemClient fileSystemClient) {
ListPathsOptions options = new ListPathsOptions();
options.setPath("folder_to_list_contents");
PagedIterable<PathItem> pagedIterable =
fileSystemClient.listPaths(options, null);
java.util.Iterator<PathItem> iterator = pagedIterable.iterator();
PathItem item = iterator.next();
while (item != null) {
System.out.println(item.getName());
if (!iterator.hasNext()) {
break;
}
item = iterator.next();
}
}
甚至尝试通过 system.properties 和 -D 选项提供代理详细信息,但没有成功。
-D 选项给出:
-Dhttp.proxyHost
-Dhttp.proxyPort
-Dhttp.proxyUser
-Dhttp.proxyPassword
-Dhttps.proxyHost
-Dhttps.proxyPort
-Dhttps.proxyUser
-Dhttps.proxyPassword
任何解决问题的指针都将受到高度赞赏。提前致谢。
【问题讨论】:
标签: azure proxy azure-sdk azure-data-lake-gen2