【问题标题】:How to define a custom port for the WebDAV server using sardine?如何使用 sardine 为 WebDAV 服务器定义自定义端口?
【发布时间】:2016-04-21 07:57:06
【问题描述】:

在 Sardine 中,如何将端口号更改为不同于端口 80(用于 HTTP)和 443(用于 HTTPS)?

用户指南声明我必须“覆盖 SardineImpl#createDefaultSchemeRegistry() 或通过实例化 SardineImpl#SardineImpl(org.apache.http.impl.client.HttpClientBuilder) 来提供您自己配置的 HTTP 客户端实例" 但我找不到如何定义端口。

当我使用 SardineImpl 实例化时:

HttpClientBuilder builder = HttpClientBuilder.create();
SardineImpl sardine = new SardineImpl(builder, "user", "password");
byte[] data;
data = FileUtils.readFileToByteArray(new File("test.txt"));
sardine.put("http://webdav-server:8095/projects/", data);

我得到:

org.apache.http.NoHttpResponseException: webdav-server:8095 failed to respond

服务器可以通过浏览器访问,所以问题一定出在端口的定义上,我找不到如何做到这一点的示例。

有人可以帮我解决这个问题吗?提前致谢。

【问题讨论】:

    标签: webdav sardine


    【解决方案1】:

    这是我绞尽脑汁寻找解决方案后得出的结论。希望它可以帮助其他人:

    HttpClientBuilder builder = new HttpClientBuilder(){
      @Override
      public CloseableHttpClient build() {
        SchemePortResolver spr = new SchemePortResolver() {
          @Override
          public int resolve(HttpHost httpHost) throws UnsupportedSchemeException {
              return 8443; // SSL port to use
          }
      };
    
      CloseableHttpClient httpclient = HttpClients.custom()
          .useSystemProperties()
          .setSchemePortResolver(spr)
          .build();
      return httpclient;
    }
    };
    
    Sardine sardine = new SardineImpl(builder, "user", "passwd");
    
    List<DavResource> resources = null;
    
    resources = sardine.list("https://ftp-site.com/path/");
    resources.forEach(resource -> {
      System.out.println(resource.getName());
    }
    

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 2018-07-23
      • 2022-11-10
      • 1970-01-01
      • 2019-02-07
      相关资源
      最近更新 更多