2016-05-03 50 views
1

我试图使用他们的REST API将我的图片上传到Cloudinary。来自CN1的Cloudinary库对我来说工作得非常好,但我希望能够控制诸如FailSilently和addToQueue和addToQueueAndWait等一些东西。使用REST API上传到Cloudinary CN1

这是我的代码,我在那里用相机拍照,然后我上传到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

感谢

编辑: 下面是语法:

enter image description here

回答

2

您需要在代码中进行一些更改。 请参阅this section

api_keyapi_secret不应该像您一样添加为APIKEY + ":" + APISECRET。此语法仅在使用Admin API而非Upload API时使用。

在请求参数:

  • 您应该包括api_key参数设置为您API_KEY。
  • 您应该将timestamp参数设置为当前时间。
  • This timestamp,以及public_id和您的api_secretshould be signed。这应该是signature参数的值。
0

“@”表示法用于浏览器,不应用于请求。您需要使用基本身份验证:

String encoded = Base64.encodeNoNewline((APIKEY + ":" + APISECRET).getBytes()); 
request.addRequestHeader("Authorization", "Basic " + encoded); 
+0

嗨Sha。我刚刚添加了您的线路,但仍然收到“400 BAD REQUEST”消息。你认为addData()和addArgument()方法正确使用吗? – Felipe

+0

你确实删除了@部分吗?您提供的链接不适用于上传API部分,但我认为该网址应该包含图片名称,尽管这有点不清楚。 –

+0

是的,我删除了@。请参阅代码。我刚刚更新了它。我还添加了语法(URL和参数)的屏幕截图。我假设我必须使用addArgument()方法和使用addData()的路径来添加“public_id”(上传图片的名称) – Felipe