2012-02-09 19 views
7

W związku z tym, jak zastosować HTTPBuilder i Groovy do skonstruowania zapytania? Próbowałem wielu rzeczy, ale nie rozumiem.Używanie interfejsu REST API produktu Artifactory do wdrażania pliku JAR

def http = new HTTPBuilder() 
http.request('http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar', PUT, JSON) { req -> 

     body = [ 
      uri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar", 
      downloadUri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar", 
      repo: "libs-snapshot-local", 
      path: "c:\\pathtojarfile\\test.jar", 
      created: "2012-02-03T08:37:12.599-0800", 
      createdBy: "someuser", 
      size: "1024", 
      mimeType: "application/java-archive" 

     ] 

    response.success = { resp, json -> 


    } 

    } 

Wydaje mi się, że częściowo się do tego dostałem, ale przesyła pusty plik jar. Wygląda na to, że ciało jest całkowicie ignorowane. Usunięcie go daje taki sam wynik. Nie mogę znaleźć dobrego odniesienia do tego, jak to się robi.

Odpowiedz

13

JSON we wspomnianej dokumentacji jest rzeczywiście Artifactory za odpowiedź na żądanie wdrażania.
dotyczących rozmieszczenia Artifactroy wymaga jedynie prostego żądania PUT, na przykład:

def restClient = new RESTClient('http://localhost:8080/artifactory/libs-release-local/') 
restClient.auth.basic 'username', 'password' 
restClient.encoder.'application/zip' = this.&encodeZipFile 
def encodeZipFile(Object data) throws UnsupportedEncodingException { 
    def entity = new FileEntity((File) data, 'application/zip'); 
    entity.setContentType('application/zip'); 
    return entity 
} 
def response = restClient.put(path: 'org/artifact/1.0/artifact-1.0.jar', 
     body: new File('/path/to/local/artifact.jar'), 
     requestContentType: 'application/zip' 
) 
+0

To działa! Dziękuję Ci! Dokumentacja jest trochę zagmatwana. Niektórzy z nich mówią "Sample output", a niektórzy mówią "Sample usage". Węzeł wdrażania miał "Przykład użycia" .... które myślałem, że będzie jak wywołać api. – stuff22

Powiązane problemy