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}
好的,对于任何想要从呼叫中接收字符串的人,response 和 response.messgage() 不要不提供那个。要获取提供商的响应,您只需要在 onResponse 中调用 response.body().string() 即可 returns 请求中的消息。
但毕竟,如果你想接收一个 JSON 文件,Retrofit 是更好的选择
.addConverterFactory(GsonConverterFactory.create(gson)).
如果您仍想接收字符串,只需使用 .addConverterFactory(ScalarsConverterFactory.create()) 说明 here.
我想在我的服务器上上传文件,我决定尝试使用 OKHTTP 而不是我当前基于 android 自己的 HTTP 实现和 AsyncTask 的方法。
无论如何,我使用了 OKHTTP 及其异步实现(来自其自己的方法),但它 returns 在 GET 和 [=24= 中都是空消息(请求代码正常,消息为空) ] 方法。
我是不是执行错了,还是还有什么我没有考虑到的?与此同时,我找不到类似的案例,除了
代码如下:
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}
好的,对于任何想要从呼叫中接收字符串的人,response 和 response.messgage() 不要不提供那个。要获取提供商的响应,您只需要在 onResponse 中调用 response.body().string() 即可 returns 请求中的消息。
但毕竟,如果你想接收一个 JSON 文件,Retrofit 是更好的选择 .addConverterFactory(GsonConverterFactory.create(gson)).
如果您仍想接收字符串,只需使用 .addConverterFactory(ScalarsConverterFactory.create()) 说明 here.