在 CN1 中使用 REST API 上传到 Cloudinary
upload to Cloudinary using REST API in CN1
我正在尝试使用他们的 REST API 将我的照片上传到 Cloudinary。来自 CN1 的 Cloudinary 库对我来说效果很好,但我希望控制一些东西,比如 FailSilently 以及能够 addToQueue 和 addToQueueAndWait。
这是我的代码,我在其中使用相机拍照,然后上传到 Cloudinary,但它似乎不起作用:
@Override
protected void onMain_ButtonSubirAPIAction(Component c, ActionEvent event) {
String picture = Capture.capturePhoto(width, -1);
if(picture!=null){
String cloudinaryURL = "https://api.cloudinary.com/v1_1/"+CLOUDNAME+"/image/upload";
MultipartRequest request = new MultipartRequest() {
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map <String, Object> result = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
labelX.setText((String)result.get("url"));
}
};
request.setPost(true);
request.setHttpMethod("POST");
String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes());
request.addRequestHeader("Authorization", "Basic " + encoded);
request.setUrl(cloudinaryURL);
try {
request.addData("file", picture, "image/jpeg");
request.addArgument("public_id", "name1");
NetworkManager.getInstance().addToQueue(request);
} catch(Exception err) {
}
}
}
我一直在尝试修改其 API 文档页面中指示的参数:http://cloudinary.com/documentation/admin_api#usage_examples
谢谢
编辑:
语法如下:
“@”符号用于浏览器,不应用于请求。您需要这样使用基本身份验证:
String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes());
request.addRequestHeader("Authorization", "Basic " + encoded);
您需要对代码进行一些更改。
请参阅 this section。
不应像您那样将 api_key
和 api_secret
添加为 APIKEY + ":" + APISECRET
。此语法仅在使用 Admin API 时使用,而不是 Upload API.
请求参数:
- 您应该将
api_key
参数设置为您的 api_key。
- 您应该将
timestamp
参数设置为当前时间。
- 这个
timestamp
,以及 public_id
和你的 api_secret
should be signed。这应该是 signature
参数的值。
我正在尝试使用他们的 REST API 将我的照片上传到 Cloudinary。来自 CN1 的 Cloudinary 库对我来说效果很好,但我希望控制一些东西,比如 FailSilently 以及能够 addToQueue 和 addToQueueAndWait。
这是我的代码,我在其中使用相机拍照,然后上传到 Cloudinary,但它似乎不起作用:
@Override
protected void onMain_ButtonSubirAPIAction(Component c, ActionEvent event) {
String picture = Capture.capturePhoto(width, -1);
if(picture!=null){
String cloudinaryURL = "https://api.cloudinary.com/v1_1/"+CLOUDNAME+"/image/upload";
MultipartRequest request = new MultipartRequest() {
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map <String, Object> result = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
labelX.setText((String)result.get("url"));
}
};
request.setPost(true);
request.setHttpMethod("POST");
String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes());
request.addRequestHeader("Authorization", "Basic " + encoded);
request.setUrl(cloudinaryURL);
try {
request.addData("file", picture, "image/jpeg");
request.addArgument("public_id", "name1");
NetworkManager.getInstance().addToQueue(request);
} catch(Exception err) {
}
}
}
我一直在尝试修改其 API 文档页面中指示的参数:http://cloudinary.com/documentation/admin_api#usage_examples
谢谢
编辑: 语法如下:
“@”符号用于浏览器,不应用于请求。您需要这样使用基本身份验证:
String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes());
request.addRequestHeader("Authorization", "Basic " + encoded);
您需要对代码进行一些更改。 请参阅 this section。
不应像您那样将 api_key
和 api_secret
添加为 APIKEY + ":" + APISECRET
。此语法仅在使用 Admin API 时使用,而不是 Upload API.
请求参数:
- 您应该将
api_key
参数设置为您的 api_key。 - 您应该将
timestamp
参数设置为当前时间。 - 这个
timestamp
,以及public_id
和你的api_secret
should be signed。这应该是signature
参数的值。