我想在我的服务器上上传一个文件,我决定尝试OKHTTP,而不是我目前基于android自己的HTTP实现和AsyncTask的方法。
无论如何,我使用了OKHTTP及其异步实现(来自它自己的配方(,但它在GET和POST方法中都返回了一条空消息(请求代码是可以的,消息是空的(。我是不是执行错了,还是还有什么我没有考虑过的?同时,我找不到类似的案例,除了这个案例说使用了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((,即可返回请求中的消息。
但毕竟,如果您想使用.addConverterFactory(GsonConverterFactory.create(gson((.
如果您仍然想接收字符串,只需使用.addConverterFactory(ScalarsConverterFactory.create(((,如下所述。