Na época da versão 3.x do Apache Commons HttpClient, era possível fazer uma solicitação POST multipart / form-data ( um exemplo de 2004 ). Infelizmente, isso não é mais possível na versão 4.0 do HttpClient .
Para nossa atividade principal "HTTP", multipart está um tanto fora do escopo. Adoraríamos usar código multiparte mantido por algum outro projeto para o qual esteja no escopo, mas não tenho conhecimento de nenhum. Tentamos mover o código multipartes para commons-codec alguns anos atrás, mas não decolei por aí. Oleg mencionou recentemente outro projeto que tem código de análise multipartes e pode estar interessado em nosso código de formatação multipartes. Não sei o status atual disso. ( http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html )
Alguém conhece alguma biblioteca Java que me permita escrever um cliente HTTP que pode fazer uma solicitação POST multipart / form-data?
Histórico: Eu quero usar a API remota do Zoho Writer .
Respostas:
Usamos HttpClient 4.x para fazer a postagem de arquivos multipartes.
ATUALIZAÇÃO : a partir do HttpClient 4.3 , algumas classes se tornaram obsoletas. Aqui está o código com a nova API:
Abaixo está o snippet original do código com a API HttpClient 4.0 obsoleta :
fonte
Estas são as dependências do Maven que possuo.
Código Java:
Dependências Maven em pom.xml:
fonte
HttpEntity
aulaSe o tamanho dos JARs for importante (por exemplo, no caso de miniaplicativos), também é possível usar diretamente httpmime com java.net.HttpURLConnection em vez de HttpClient.
Código:
Dependência em pom.xml:
fonte
Use este código para fazer upload de imagens ou quaisquer outros arquivos para o servidor usando post em multipart.
requer os arquivos abaixo para fazer o upload.
bibliotecas são
httpclient-4.1.2.jar,
httpcore-4.1.2.jar,
httpmime-4.1.2.jar,
httpclient-cache-4.1.2.jar,
commons-codec.jar
ecommons-logging-1.1.1.jar
devem estar no classpath.fonte
Você também pode usar REST Assured, que se baseia no cliente HTTP. É muito simples:
fonte
multiPart("controlName", new File("/somedir/file.bin"))
consulte github.com/rest-assured/rest-assured/wiki/…Aqui está uma solução que não requer nenhuma biblioteca.
Esta rotina transmite todos os arquivos do diretório
d:/data/mpf10
paraurlToConnect
fonte
httpcomponents-client-4.0.1
trabalhou para mim. No entanto, tive que adicionar o jar externoapache-mime4j-0.6.jar
( org.apache.james.mime4j ), caso contrárioreqEntity.addPart("bin", bin);
não compilaria. Agora está funcionando como um encanto.fonte
Encontrei este exemplo no Guia de início rápido do Apache . É para a versão 4.5:
fonte
Temos uma implementação java pura de envio de formulário multipartes sem usar dependências externas ou bibliotecas fora do jdk. Consulte https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java
fonte
Meu código postar multipartFile no servidor.
fonte