0

curl https://api.truevault.com/v1/vaults/00000000-0000-0000-0000-000000000000/blobs \ -X POST \ -u [API_KEY | | ACCESS_TOKEN]: \ --form "file=@xray.pdf" \ -H "Content-Type:multipart/form-data"

https://docs.truevault.com/BLOBs#create-a-blobで説明されているとおり

HttpClient httpClient = new DefaultHttpClient();
Log.d(Kiwee.KIWEE_TAG,"Request is:"+request.getUrl());
//Request printed here is:
//https://api.truevault.com/v1/vaults/vault_id/blobs
HttpPost post = new HttpPost(request.getUrl());
String basicAuth = BASIC_AUTH+Base64.encodeToString(API_KEY.getBytes(),Base64.DEFAULT);
post.setHeader(AUTHORIZATION,basicAuth);
post.setHeader(CONTENT_TYPE,TYPE_MULTIPART_FORM_DATA);
file = new File(filePath);
//file path on android device of image taken
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addPart("file",new FileBody(file));
post.setEntity(entityBuilder.build());
HttpResponse response = httpClient.execute(post);

悪い要求になってしまいます。応答は次のとおりです。

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>

同等の curl を使用すると、リクエストは成功します。Javaコードで何を変更すべきか提案はありますか?

4

1 に答える 1

0

解決済み:

String basicAuth=BASIC_AUTH+Base64.encodeToString(API_KEY.getBytes(),Base64.DEFAULT);

への変更

String basicAuth = BASIC_AUTH + Base64.encodeToString((API_KEY+":"+EMPTY_STRING).getBytes(), Base64.NO_WRAP);
于 2015-02-17T05:44:59.593 に答える