Der Stackoverflow-Artikel, den ich beim Hochladen einer Datei mit der Slack-API gefunden habe, war etwas unverdaulich, daher schreibe ich ihn auf. How to upload a file using Apache HttpPost Selbst wenn Sie wie oben schreiben, ist es 200 OK, aber "keine Dateidaten" Daher war der Datei-Upload nicht erfolgreich. Ich hatte diesen Artikel also im Voraus gelesen POST Multipart / Formulardaten mit HttpURLConnection Ich fragte mich, ob ich InputStream verwenden sollte, und als ich das Argument der Methode im offiziellen Dokument überprüfte, war es immer noch da. MultipartEntityBuilder
Das für die API verwendete Token wurde vorab injiziert.
public String post(File file) {
CloseableHttpClient client = HttpClientBuilder.create()
.build();
HttpEntity requestEntity=null;
try {
requestEntity = MultipartEntityBuilder.create()
.addTextBody("token", token)
.addTextBody("filetype", "jpg")
.addBinaryBody("file", new FileInputStream(file),ContentType.IMAGE_JPEG,"graph")
.build();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
HttpPost post = new HttpPost(URL);
String result = null;
try {
post.setEntity(requestEntity);
HttpResponse response = client.execute(post);
logger.info("Status: {}", response.getStatusLine());
result = collectResponse(response);
} catch (IOException e) {
logger.error("While posting", e);
}
return result;
}
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.1</version>
</dependency>
Referenzlink: https://github.com/salahsheikh/jpushbullet/blob/master/src/main/java/com/github/silk8192/jpushbullet/PushbulletClient.java
Recommended Posts