Я пытаюсь загрузить свои изображения в Cloudinary, используя их REST API. Библиотека Cloudinary от CN1 мне очень понравилась, но я хочу контролировать несколько вещей, например, 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
Благодарность
РЕДАКТИРОВАТЬ: Вот синтаксис:
2 ответа
Вам необходимо внести некоторые изменения в свой код. См. этот раздел.
api_key
и api_secret
не следует добавлять как APIKEY + ":" + APISECRET
, как вы это сделали. Этот синтаксис используется только при использовании Admin API, а не Upload API.
По параметрам запроса:
- Вы должны включить параметр
api_key
в свой api_key. - Вы должны включить параметр
timestamp
, установленный на текущее время. - Этот
timestamp
вместе сpublic_id
и вашимapi_secret
должен быть подписан. Это должно быть значение параметраsignature
.
Обозначение «@» используется для браузеров и не должно использоваться для запроса. Вам необходимо использовать базовую аутентификацию как таковую:
String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes());
request.addRequestHeader("Authorization", "Basic " + encoded);
Похожие вопросы
Новые вопросы
rest
REST (Transfer State Transfer) - это стиль архитектуры программного обеспечения для распределенных гипермедиа систем, таких как World Wide Web. Его популярность возросла по сравнению с архитектурами RPC, такими как SOAP, из-за внутренней разобщенности клиента с сервером, возникающей из-за наличия единого интерфейса между гетерогенными системами.