Java 从Jersey/JAX-RS客户端将ZIP发布到Artifactory

Java 从Jersey/JAX-RS客户端将ZIP发布到Artifactory,java,rest,jersey,jax-rs,artifactory,Java,Rest,Jersey,Jax Rs,Artifactory,我有一套要求,要求Jersey/JAX-RS客户机将ZIP文件发布到Artifactory上的repos。具体而言,我需要将ZIP发布到: 看起来Artifactory公开了一个: 因此,看起来我需要将somelib-1.0.0.zip放在上面标识的URL中。我的建议如下: // Groovy pseudo-code for the PUT entity: class Publication { @JsonProperty String uri @JsonProper

我有一套要求,要求Jersey/JAX-RS客户机将ZIP文件发布到Artifactory上的repos。具体而言,我需要将ZIP发布到:

看起来Artifactory公开了一个:

因此,看起来我需要将
somelib-1.0.0.zip
放在上面标识的URL中。我的建议如下:

// Groovy pseudo-code for the PUT entity:
class Publication {
    @JsonProperty
    String uri

    @JsonProperty
    String downloadUri

    @JsonProperty
    String repo

    @JsonProperty
    String path

    @JsonProperty
    Date created

    @JsonProperty
    String createdBy

    @JsonProperty
    Integer size

    @JsonProperty
    String mimeType

    @JsonProperty
    Map<String,String> checksums

    @JsonProperty
    Map<String,String> originalChecksums
}
放置实体 最重要的是,我不理解
PUT
实体应该是什么。使用Jersey/JAX-RS风格的POJO,我可能会执行以下操作:

// Again, Groovy pseudo-code
Publication publication = getSomehow()  // Ideally ZIP is read into portable format by this point

webResource.path("libs-release-local").path("ourorg").path("somelib").path("1.0.0").path("somelib-1.0.0.zip")
    .type(MediaType.???).entity(publication).put(???)
但是,我仍然不知道如何/在哪里发送实际的ZIP文件。有一个
path
字段,它似乎指定了二进制文件的本地(客户端)路径,但这只是一个字符串/引用,而不是要发布的实际二进制文件

另外,根据维基百科,ZIP媒体类型是
application\ZIP
,但JAX-RS中没有这样的定义

这里有什么想法吗?

基本授权很好。
你是实体,你不需要任何东西。您在文档中看到的JSON是PUT调用的结果。

谢谢@JBaruch(+1)-但是,请求中怎么可能不需要PUT实体?否则我怎么发布ZIP?!?或者,@JBaruch,更好的是,它是最新的并且可以用于此?如果是这样的话,我将尽量避免重新发明轮子:-)再次感谢@JBaruch(+1),最后的问题:(1)有关于这个客户机的文档/示例用法/等等吗。?(2)Maven坐标是多少?我看到了,但它的版本(0.16)与我在Bintray(0.10)上看到的内容冲突…想法?再次感谢!使用示例最好显示在中。而且,最新版本是0.17。再次感谢@JBaruch(+1)所以
jfrog.artifactory工具:artifactoryjava客户端:0.17
for Maven/Gradle coords?这是jcenter吗?
Client client = Client.create();
WebResource resource = client.resource(BASE_URI);
client.addFilter(new HTTPBasicAuthFilter("deployuser", "12345"));   // dummy credentials, obviously
// Again, Groovy pseudo-code
Publication publication = getSomehow()  // Ideally ZIP is read into portable format by this point

webResource.path("libs-release-local").path("ourorg").path("somelib").path("1.0.0").path("somelib-1.0.0.zip")
    .type(MediaType.???).entity(publication).put(???)