我在一个 android 应用程序上使用 OkHttp3 来监听 Web 服务,保持问题基本,以下是技巧:
try(Response response = client.newCall(request).execute()) {
responseBody = response.body().string();
responseHeaders = response.headers();
serviceContent = responseBody; // store response content in class' property
serviceHeaders = responseHeaders; // store response headers in class' property
serviceStatusCode = response.code(); // store response status code in class' property
} catch(IOException e) {
e.printStackTrace();
}
然后在我的活动中,我用serviceStatusCode
不同的方式处理 Web 服务响应。
我正在收听的服务之一是 SkyScanner,它可能会返回 304,表明响应已经创建,您必须使用本地存储的先前响应。
我一切正常,但是当 SkyScanner 返回 304 时我无法捕捉到它,这是我用来根据我活动中的代码处理响应的方式:
switch(statusCode) {
case 304: {
// Get data from local DB
break;
}
case 200: {}
// And so on
}
问题是即使 Fiddler 说它是 304statusCode
也是 200(由 填充)。如果返回 304,为什么不返回 304?response.code()
response.code()