【发布时间】:2021-08-06 09:42:45
【问题描述】:
我想在我的服务器上上传文件,我决定尝试 OKHTTP 而不是我当前基于 android 自己的 HTTP 实现和 AsyncTask 的方法。
无论如何,我使用了 OKHTTP 及其异步实现(来自它自己的配方),但它在 GET 和 POST 方法中都返回了一个空消息(请求代码正常,消息为空)。 我是不是执行错了,还是还有什么我没有考虑到的?与此同时,我找不到类似的案例,除了this 说使用了 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: 响应{protocol=h2, code=200, message=, url=https://postman-echo.com/get?foo1=bar1&foo2=bar2}
【问题讨论】:
-
能否请您添加日志响应?另外,你能记录下失败的 iOException 吗?这将有助于更好地理解错误。预期的反应是什么?很多时候文件上传 apis 只是返回 200 来确认文件已上传,没有别的。
-
谢谢,@MohitAjwani 我已经添加了日志
-
所以这个 API 返回的是空消息。虽然是成功。所以,这是标准的 API 行为。
-
亲爱的@MohitAjwani 它应该返回如下内容:" {"args":{"foo1":"bar1","foo2":"bar2"},"headers":{"x- forwarded-proto":"https","x- ..."
-
尝试添加转换器工厂 - futurestud.io/tutorials/… 这应该有助于将响应转换为对象,以便您可以打印它。
标签: java android post get okhttp