在okhttp3 Android中无法访问POST参数

时间:2016-07-06 07:40:07

标签: android okhttp okhttp3

我在服务器上使用okhttp3上传图片,在上传图片中成功,但我无法使用MultipartBody

POST参数

我的代码在这里..

File sourceFile = new File(sourceImageFile);

            Log.logInfo("File...::::" + sourceFile + " : " + sourceFile.exists());

            final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");


            OkHttpClient client = App.getInstance().getOkHttpClient();

            RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart(KEY_ACCESS_TOKEN, accessToken)
                    .addFormDataPart(KEY_FILE, "profile.png", RequestBody.create(MEDIA_TYPE_PNG, sourceFile))
                    .build();

            Request request = new Request.Builder()
                    .url(URL_IMAGE_UPLOAD)
                    .post(requestBody)
                    .build();

           Response response = client.newCall(request).execute();

我想在上面的代码中通过POST方法添加“key”和“value”所以我该怎么做。

2 个答案:

答案 0 :(得分:3)

如前所述,请参阅此链接https://stackoverflow.com/a/34127008/6554840

通过 member_id 及其值。

所以你传递的值KEY_ACCESS_TOKEN必须是有效的。

.addFormDataPart(KEY_ACCESS_TOKEN, accessToken)

将作为post参数。

我希望它能奏效。

注意:必须是您的Web端正在运行。

答案 1 :(得分:2)

使用此功能,您必须以这种方式创建HashMap<String, String>add创建Builder

这些是进口货。

import okhttp3.OkHttpClient;
import okhttp3.FormBody;
import okhttp3.Request;
import okhttp3.RequestBody;

代码:

// HashMap with Params
HashMap<String, String> params = new HashMap<>();
params.put( "Param1", "A" );
params.put( "Param2", "B" );

// Initialize Builder (not RequestBody)
FormBody.Builder builder = new FormBody.Builder();

// Add Params to Builder
for ( Map.Entry<String, String> entry : params.entrySet() ) {
    builder.add( entry.getKey(), entry.getValue() );
}

// Create RequestBody
RequestBody formBody = builder.build();

// Create Request (same)
Request request = new Request.Builder()
        .url( "url" )
        .post( formBody )
        .build();