使用OkHttp获取Http状态码

34

我正在使用OkHttp获取一些网站的内容。

然而,我无法从响应中获取Http状态码。

我的Java代码:

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
                    .url("https://www.google.at")
                    .build();
Response httpResponse = client.newCall(request).execute();    
String html = httpResponse.body().string();

这种方法:

httpResponse.toString(); 

返回以下内容:

Response{protocol=http/1.1, code=200, message=OK, url=https://www.google.at}

有没有一种方法可以将statusCode作为整数获取,或者我需要使用正则表达式从此toString()方法中过滤它?

3个回答

68
你可以使用HttpResponse类,通过该类可以按照以下方式访问状态码;
HttpResponse httpResponse = client.newCall(request).execute(); 
httpResponse.getStatusLine().getStatusCode();

如果您正在使用com.squareup.okhttp.Response,则可以使用code()方法获取HTTP状态码。
Response httpResponse = client.newCall(request).execute(); 
httpResponse.code();

4
execute-function 返回的是一个 com.squareup.okhttp.Response 对象,而不是一个 org.apache.http.HttpResponse 对象。 - maja
你刚才提到的类中有一个叫做code(http://square.github.io/okhttp/javadoc/com/squareup/okhttp/Response.html#code())的方法,你不能使用它吗? - dinukadev

39

您可以通过以下方式获得响应:

Response response = client.newCall(request).execute();

并使用以下代码获取响应状态码:

int responseCode = response.code();

0
Response response = client.newCall(request).execute();
HttpStatus status = response!=null ? HttpStatus.resolve(response.code()) : null;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接