2016-04-19 13 views
0

korrekt Ich verwende Koush/Ion Bibliothek.So senden Sie mehrere Dateien und Parameter mit Koush/Ion

Ich versuche, eine Anfrage mit regulären Parametern und Dateien zu senden, wie ein HTML-Multipart-Formular, aber scheint nichts zu senden. Ist das der richtige Weg? oder mache ich es ein bisschen komisch?

Wenn die Anforderung mit Dateien geht dauert es mehr Zeit, um den Rückruf zu laufen, so denke ich, dass die Dateien, sendet aber in einer falschen Art und Weise:/

Entschuldigung für die Sprache hofft, dass ich gut erklärt.

Die print_r für $_POST, $_GET und $_FILES gibt immer leere Arrays zurück.

Builders.Any.B builder = Ion.with(context).load(http_verb, route).setLogging(TAG, Log.ERROR); 

Log.d(TAG, parameters.size() + " parameters and " + files.size() + " files"); 

List<Part> parts = new ArrayList(); 

for (int i = 0; i < files.size(); i++) { 
    Log.d(TAG, "File " + i + ": " + files.get(i).getName()); 
    parts.add(new FilePart("file_" + i, files.get(i))); 
} 

for(ApiParameter parameter : parameters) { 
    Log.d(TAG, "Parameter: " + parameter.key + " = " + parameter.value); 
    parts.add(new StringPart(parameter.key, parameter.value)); 
} 

builder.addMultipartParts(parts); 

builder.asString().setCallback(callback); 

Das Android-Protokoll sagt, das (geerntet):

D/API: Request: PUT: http://api.<replaced> 
D/API: 11 parameters and 1 files 
D/API: File 0: f83ee728-8b1b-4cbf-8f6c-c103456366c4 
D/API: Parameter: token = d81db04cc03faa16717a61eb494969b16e134b38 
D/API: Parameter: id_google_place = EiJDYXJyZXIgQmFydHJpbmEsIFRlcnJhc3 

Antwort

0

ich endlich das Problem gefunden:

ich keine Dateien in PUT veröffentlichen können (nur mit Post), und ich gelöst es mit diesem:

if(http_verb.toUpperCase().equals("POST")){ 
     for (ApiParameter parameter : parameters) { 
      Log.d(TAG, "Parameter: " + parameter.key + " = " + parameter.value); 
      builder.setMultipartParameter(parameter.key, parameter.value); 
     } 
     for (int i = 0; i < files.size(); i++) { 
      Log.d(TAG, "File " + i + ": " + files.get(i).getName()); 
      builder.setMultipartFile("file_" + i, files.get(i)); 
     } 
    }else{ 
     for(ApiParameter parameter : parameters) { 
      Log.d(TAG, "Parameter" + parameter.key + " = " + parameter.value); 
      builder.setBodyParameter(parameter.key, parameter.value); 
     } 
    } 
+0

Wenn Ihr Backend auf PHP ist, können Sie den PHP-Code auch bekanntgeben? @emmgfx – Sp4Rx

+0

@ Sp4Rx leider habe ich keinen Zugriff auf den Code. Es tut uns leid. – emmgfx

+0

Ich löste es mit foreach-Schleife in PHP-Seite. – Sp4Rx

Verwandte Themen