在Chrome或Java Url连接下,Artifactory不返回相同的文件。

问题描述 投票:0回答:1

我写了一小段代码来从artifactory仓库下载maven-metadata.xml文件。

这很简单,就像

URLConnection c = new URL("http://...").openConnection();
InputStream is = c.getInputStream()

输入流,然后我用它来创建一个XML文档对象。当这样做时,我得到以下数据。

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>be.comp.mapp</groupId>
  <artifactId>mapp3.service.universemanager</artifactId>
  <version>1.0.0.0-20150810.155925-225</version>
  <versioning>
    <latest>1.0.0.0-SNAPSHOT</latest>
    <versions>
      <version>1.0.0.0-SNAPSHOT</version>
    </versions>
    <lastUpdated>20150811130209</lastUpdated>
  </versioning>
</metadata>

这实际上是不完整的,与我在谷歌浏览器中使用完全相同的URL得到的文件相比。

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>be.comp.mapp</groupId>
  <artifactId>mapp3.service.universemanager</artifactId>
  <version>1.0.0.0-20150810.155925-225</version>
  <versioning>
    <snapshot>
      <timestamp>20150812.135251</timestamp>
      <buildNumber>231</buildNumber>
    </snapshot>
    <lastUpdated>20150812135517</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
        <classifier>tests</classifier>
        <extension>jar</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
      <snapshotVersion>
        <classifier>test-sources</classifier>
        <extension>jar</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
      <snapshotVersion>
        <extension>pom</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
      <snapshotVersion>
        <classifier>javadoc</classifier>
        <extension>jar</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
      <snapshotVersion>
        <classifier>sources</classifier>
        <extension>jar</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
      <snapshotVersion>
        <extension>jar</extension>
        <value>1.0.0.0-20150812.135251-231</value>
        <updated>20150812135251</updated>
      </snapshotVersion>
    </snapshotVersions>
  </versioning>
</metadata>

我试图通过设置URLConnection的用户代理或以不同方式配置Artifactory repo来解决这个问题,但无法解决这个奇怪的问题。

java maven user-agent artifactory urlconnection
1个回答
0
投票

我也有同样的问题。他们似乎有一些基于UserAgent的逻辑。所以,如果你发送User-Agent.OpenConnection(); InputStream is = c...: Java1.8.0_251,就像URLConnection默认的那样,那么它会给你一部分内容。如果你发送任何其他的UserAgent,那么就可以了。

URLConnection hc = new URL(url).openConnection();
hc.setRequestProperty("User-Agent", "myJavaCode");
return hc.getInputStream()
© www.soinside.com 2019 - 2024. All rights reserved.