如何使用Koush / Ion正确发送多个文件和参数

时间:2016-04-19 16:26:06

标签: php android rest ion ion-koush

我正在使用Koush / Ion库。

我尝试使用常规参数和文件发送请求,例如html multipart表单,但似乎没有发送任何内容。这是正确的方法吗?或者我这样做有点奇怪?

当请求带有文件时,运行回调需要更多时间,所以我认为这是以不正确的方式发送文件:/

请原谅我的语言,希望我解释得很好。

print_r$_POST$_GET的{​​{1}}始终返回空数组。

$_FILES

Android日志说明(裁剪):

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

1 个答案:

答案 0 :(得分: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);
        }
    }