我在服务器上使用okhttp3
上传图片,在上传图片中成功,但我无法使用MultipartBody
我的代码在这里..
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”所以我该怎么做。
答案 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();