Как сделать HTTP-вызов POST с помощью application / zip и multipart / form-data с помощью плагина io.github.http-builder-ng.http-plugin в Groovy - PullRequest
0 голосов
/ 13 июня 2018

Я использую приведенный ниже код для выполнения HTTP-запроса POST к серверу с типом контента application/zip и multipart/form-data с использованием io.github.http-builder-ng.http-plugin. (Один из примеров общего доступа здесь )

plugins {
    id "io.github.http-builder-ng.http-plugin" version "0.1.1"  
}
import groovyx.net.http.ApacheEncoders
import groovyx.net.http.*
import groovyx.net.http.HttpConfigs.BasicHttpConfig
import groovyx.net.http.OkHttpBuilder.OkHttpToServer
import static groovyx.net.http.MultipartContent.multipart

File msFile =new File("C:\\GradlePOC\\POC_1\\btest.zip");
OkHttpBuilder.configure {
    request.uri = 'https://example.com'
    request.auth.basic 'ABC', 'XXXXX'
    request.encoder('application/zip'){ BasicHttpConfig config, OkHttpToServer req->
        req.toServer(new FileInputStream(
            msFile
        ))
    }
}.post {
    request.uri.path = '/application/applications/3547/binaries'    
    request.contentType = 'multipart/form-data'
    request.body = multipart {      
        field 'name', 'data'
        part 'filename', 'btest.zip', 'application/zip', msFile     
    }
    request.encoder 'multipart/form-data', OkHttpBuilder.&multipart    
}

Но приведенный выше код не работает для меня.Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 07 мая 2019

Попробуйте с этими изменениями:

plugins {
    id "io.github.http-builder-ng.http-plugin" version "0.1.1"  
}

import groovyx.net.http.HttpBuilder
import groovyx.net.http.MultipartContent
import groovyx.net.http.OkHttpEncoders
import groovyx.net.http.ChainedHttpConfig
import groovyx.net.http.ToServer

File msFile =new File("C:\\GradlePOC\\POC_1\\btest.zip");

OkHttpBuilder.configure {
    request.uri = 'https://example.com'
    request.auth.basic 'ABC', 'XXXXX'
    request.encoder('application/zip'){ ChainedHttpConfig config, ToServer req->
        req.toServer(new FileInputStream(msFile))
    }
}.post {
    request.uri.path = '/application/applications/3547/binaries'    
    request.contentType = 'multipart/form-data'
    request.body = MultipartContent.multipart {      
        field 'name', 'data'
        part 'filename', 'btest.zip', 'application/zip', msFile     
    }
    request.encoder 'multipart/form-data', OkHttpEncoders.&multipart    
}
...