Android 使用OkHttp3发送多部分正文

Android 使用OkHttp3发送多部分正文,android,multipart,okhttp3,Android,Multipart,Okhttp3,我正在编写一个需要与服务器通信的android应用程序。我正在努力为OkHttp3制作一个多部件的主体。我的代码如下所示: OkHttpClient client = new OkHttpClient(); try { RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDat

我正在编写一个需要与服务器通信的android应用程序。我正在努力为OkHttp3制作一个多部件的主体。我的代码如下所示:

OkHttpClient client = new OkHttpClient();

try 
{
    RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("someKey1", "someString1")
                    .addFormDataPart("someKey2", "someString2")
                    .build();
    System.out.println(requestBody.toString());

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

    Response response = client.newCall(request).execute();
    return response;
}
catch (IOException e)
{
    e.printStackTrace();
    return false;
}
I/System.out: okhttp3.MultipartBody@14040826
这几乎是每个人都使用的标准代码。服务器接收到请求,但我无法从请求中获取MultipartBody。打印多部分正文时,如下所示:

OkHttpClient client = new OkHttpClient();

try 
{
    RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("someKey1", "someString1")
                    .addFormDataPart("someKey2", "someString2")
                    .build();
    System.out.println(requestBody.toString());

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

    Response response = client.newCall(request).execute();
    return response;
}
catch (IOException e)
{
    e.printStackTrace();
    return false;
}
I/System.out: okhttp3.MultipartBody@14040826
所以我的问题是:为什么它不包含我的数据,它应该包含吗?我是否缺少一个库(我在gradle中包含了编译'com.squareup.okhttp3:okhttp:3.2.0',并假设MultipartBody是这个库的一部分)?多部件实体应该是什么样子


我也尝试发送一个表单体,但它看起来是一样的。

删除
okhttp3.Response=client.newCall(request.execute()


请看下面的答案:谢谢,我确实看了这些例子。然而,我更关心的是,当转换为字符串时,MultipartBody应该是什么样子,以确保我发送的数据正确。等等,你使用multipart不是仅仅因为你需要发送文件吗?你是对的,对不起,我应该用FormBody发布它。不过我还是设法让它工作了,requestBody.toString()只返回名称。塔克斯