OKHTTP GET 和 POST 请求 return 空正文消息

OKHTTP GET and POST request return empty body message

我想在我的服务器上上传文件,我决定尝试使用 OKHTTP 而不是我当前基于 android 自己的 HTTP 实现和 AsyncTask 的方法。

无论如何,我使用了 OKHTTP 及其异步实现(来自其自己的方法),但它 returns 在 GET 和 [=24= 中都是空消息(请求代码正常,消息为空) ] 方法。 我是不是执行错了,还是还有什么我没有考虑到的?与此同时,我找不到类似的案例,除了 说使用了 AsyncTask。

代码如下:

Request request;
Response response;
private final OkHttpClient client = new OkHttpClient();
private static final String postman_url = "https://postman-echo.com/get?foo1=bar1&foo2=bar2";
String message_body;

public void Get_Synchronous() throws IOException
{
    request = new Request.Builder()
            .url(postman_url)
            .build();

    Call call = client.newCall(request);
    response = call.execute();

    message_body = response.toString();
    //assertThat(response.code(), equalTo(200));
}

public void Get_Asynchronous()
{
    request = new Request.Builder()
            .url(postman_url)
            .build();

    Call call = client.newCall(request);
    call.enqueue(new Callback() {
        public void onResponse(Call call, Response response)
                throws IOException
        {
            message_body = response.toString();
            
        }

        public void onFailure(Call call, IOException e)
        {
            
        }
    });
}

编辑: 我收到登录响应:

onResponse: Response{protocol=h2, code=200, message=, url=https://postman-echo.com/get?foo1=bar1&foo2=bar2}

好的,对于任何想要从呼叫中接收字符串的人,responseresponse.messgage() 不要不提供那个。要获取提供商的响应,您只需要在 onResponse 中调用 response.body().string() 即可 returns 请求中的消息。

但毕竟,如果你想接收一个 JSON 文件,Retrofit 是更好的选择 .addConverterFactory(GsonConverterFactory.create(gson)).

如果您仍想接收字符串,只需使用 .addConverterFactory(ScalarsConverterFactory.create()) 说明 here.