在开始使用Java之前,用curl做了一个简单的测试:
curl --data-binary @./test.txt -H 'Authorization: token xxx' -H 'Content-Type: application/octet-stream' 'https://uploads.github.com/repos/ragedunicorn/github-release-test/releases/12319358/assets?name=test.txt'
下面的代码使用ApacheHTTPComponents:
public void uploadAssets(String uploadUrl, Integer releaseId) {
CloseableHttpClient client = HttpClients.createDefault();
String endpointUrl = prepareEndpointUrl(uploadUrl, releaseId.toString());
HttpPost httpPost = new HttpPost(endpointUrl);
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM);
httpPost = gitHubClient.prepareRequest(httpPost);
try {
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
Path path = Paths.get("asset1.txt");
byte[] fileContents = Files.readAllBytes(path);
builder.addBinaryBody("file", fileContents, ContentType.DEFAULT_BINARY, "file");
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
CloseableHttpResponse response = client.execute(httpPost);
System.out.println(response.getStatusLine().getStatusCode());
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, StandardCharsets.UTF_8);
System.out.println(responseString);
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
文件内容如下:
--CU1xHwh4prjGsCKr9GlFjNSxgZygRKEA
Content-Disposition: form-data; name="file"; filename="file"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
test1
Not sure why this is not working properly
--CU1xHwh4prjGsCKr9GlFjNSxgZygRKEA--
发布于 2018-08-10 11:21:15
使用以下代码工作:
Path path = Paths.get("asset1.txt");
byte[] fileContents = Files.readAllBytes(path);
ByteArrayEntity entityTest = new ByteArrayEntity(fileContents, ContentType.APPLICATION_OCTET_STREAM);
httpPost.setEntity(entityTest);
https://stackoverflow.com/questions/-100002054
复制相似问题