我想收到一份文件列表(只是Nexus服务器上的名字)。 这是我目前的代码:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(nexusUser, nexusPassword));
WebResource service = client.resource("http://localhost:8081/nexus/content/repositories/linkToRepo
ClientResponse response = service.accept("application/json").get(ClientResponse.class);
String output = response.getEntity(String.class);
但我只是从服务器收到html。我可以解析HTML但是有没有可能直接接收文件的名称和路径?
这里收到了HTML代码的简短摘录:
<body>
<h1>Index of /repositories/linkToRepo</h1>
<table cellspacing="10">
<tr>
<th align="left">Name</th>
<th>Last Modified</th>
<th>Size</th>
<th>Description</th>
</tr>
<tr>
<td><a href="../">Parent Directory</a></td>
</tr>
<tr>
<td><a href="http://localhost:8081/nexus/content/repositories/linkToRepo/1.0/">1.0/</a></td>
<td>Wed May 27 14:38:37 CEST 2015</td>
<td align="right">
</td>
<td></td>
</tr>
<tr>
<td><a href="http://localhost:8081/nexus/content/repositories/linktoRepo/maven-metadata.xml">maven-metadata.xml</a></td>
<td>Wed May 27 14:38:37 CEST 2015</td>
<td align="right">
311
</td>
<td></td>
</tr>
亲切的问候, SirSandmann
答案 0 :(得分:2)
您可以将http接受标头Accept
设置为application/json; charset=UTF-8
,以便接收更易于解析的内容。 (查看文档以了解如何操作https://jersey.java.net/documentation/1.19/client-api.html#d4e642)
但是,您应该使用Nexus Rest API(请参阅文档https://oss.sonatype.org/nexus-restlet1x-plugin/default/docs/index.html)以获取您感兴趣的内容。
答案 1 :(得分:0)
谢谢你的提示! 我解决了通过jsoup解析的问题,因为我没有使用nexus rest api的经验。
这里的代码:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(nexusUser, nexusPassword));
WebResource service = client.resource(repoPath);
ClientResponse response = service.accept("application/json",
"UTF-8").get(ClientResponse.class);
String htmlString = response.getEntity(String.class);
Document doc = Jsoup.parseBodyFragment(htmlString);
Elements elements = doc.select("a[href]");
return elements;