0

我正在编写一个需要与服务器通信的 android 应用程序。我正在努力制作一个供 OkHttp3 使用的 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;
}

这几乎是每个人都使用的标准代码。服务器收到请求,但我无法从请求中获取 MultipartBody。打印多部分正文时,它看起来像这样:

I/System.out: okhttp3.MultipartBody@14040826

所以我的问题是:为什么它不包含我的数据并且应该包含它?我是否缺少一个库(我在 gradle 中包含了 compile 'com.squareup.okhttp3:okhttp:3.2.0' 并假设 MultipartBody 是该库的一部分)?MultipartBody 应该是什么样子?

我也尝试发送 FormBody,但看起来一样。

4

1 回答 1

0

消除okhttp3.Response response = client.newCall(request).execute();

    okhttp3.Call call = client.newCall(request);
    call.enqueue(new okhttp3.Callback() {
        @Override
        public void onFailure(okhttp3.Call call, IOException e) {
            e.printStackTrace();
        }

        @Override
        public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {

        }

    });
于 2017-08-12T10:57:04.370 回答