2016-05-03 10 views
1

Ich versuche, meine Bilder mit ihrer REST-API in Cloudinary hochzuladen. Die Cloudinary-Bibliothek von CN1 funktionierte sehr gut für mich, aber ich möchte einige Dinge wie FailSilently steuern und AddQueue und AddToQueueAndWait hinzufügen können.Upload in Cloudinary mit REST API in CN1

Dies ist mein Code, wo ich ein Foto mit der Kamera nehmen und ich Cloudinary dann laden, aber es scheint nicht zu funktionieren:

@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) { 
     } 
    } 
} 

I Parameter angegeben zu ändern versucht haben, ihre API-Dokumentation Seite: http://cloudinary.com/documentation/admin_api#usage_examples

Dank

EDIT: Hier ist die Syntax:

enter image description here

Antwort

2

Es gibt einige Änderungen, die Sie in Ihrem Code vornehmen müssen. Bitte siehe this section. Die api_key und api_secret sollten nicht wie APIKEY + ":" + APISECRET hinzugefügt werden, wie Sie es getan haben. Diese Syntax wird nur bei Verwendung der Admin-API und nicht der Upload-API verwendet.

Bei den Anforderungsparameter:

  • sollten Sie umfassen die api_key Parameter auf Ihre api_key gesetzt.
  • Sie sollten den timestamp Parametersatz auf die aktuelle Zeit setzen.
  • Diese timestamp, zusammen mit der public_id und api_secretshould be signed. Dies sollte der Wert des Parameters signature sein.
0

Die Notation "@" wird für Browser verwendet und sollte nicht für Anfragen verwendet werden. Sie müssen die Standardauthentifizierung wie folgt verwenden:

+0

Hallo Shai. Ich habe gerade Ihre Zeilen hinzugefügt, aber ich bekomme immer noch eine "400 BAD REQUEST" Nachricht. Glauben Sie, dass die Methoden addData() und addArgument() korrekt verwendet werden? – Felipe

+0

Sie haben den @ Teil richtig entfernt? Der Link, den Sie angegeben haben, ist nicht für den Upload-API-Bereich gedacht, aber ich denke, die URL sollte den Image-Namen enthalten, obwohl das ein wenig unklar ist. –

+0

Ja, ich habe das @ entfernt. Bitte sehen Sie den Code. Ich habe es gerade aktualisiert. Ich habe auch einen Screenshot der Syntax (URL und Parameter) hinzugefügt. Ich gehe davon aus, dass ich die "public_id" (Name des hochgeladenen Bildes) mit der Methode addArgument() und den Pfad mit addData() hinzufügen muss – Felipe