Как правильно отправить несколько файлов и параметров с помощью Koush / Ion

я использую Коуш / Ион библиотека.

Я пытаюсь отправить запрос с обычными параметрами и файлами, например, HTML-формой, но кажется, что ничего не отправлять. Это правильный путь? или я делаю это немного странно?

Когда запрос отправляется с файлами, требуется больше времени для выполнения обратного вызова, поэтому я думаю, что отправка файлов происходит некорректно: /

Извините за язык, надеюсь, что я хорошо объяснил.

print_r за $_POST, $_GET а также $_FILES всегда возвращает пустые массивы.

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);

Журнал Android говорит это (обрезано):

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

0

Решение

Я наконец нашел проблему:

Я не могу публиковать файлы в PUT (только с постом), и я решил это следующим образом:

    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

Другие решения

я использую Коуш / Ион библиотека.

Я пытаюсь отправить запрос с обычными параметрами и файлами, например, HTML-формой, но кажется, что ничего не отправлять. Это правильный путь? или я делаю это немного странно?

Когда запрос отправляется с файлами, требуется больше времени для выполнения обратного вызова, поэтому я думаю, что отправка файлов происходит некорректно: /

Извините за язык, надеюсь, что я хорошо объяснил.

print_r за $_POST, $_GET а также $_FILES всегда возвращает пустые массивы.

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);

Журнал Android говорит это (обрезано):

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
0

Я наконец нашел проблему:

Я не могу публиковать файлы в PUT (только с постом), и я решил это следующим образом:

    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);
}
}

active «data-shortcut =» A
самый старый «data-shortcut =» O
голосует «data-shortcut =» V
0
По вопросам рекламы [email protected]