使用OkHttp获取Http状态代码

maj*_*aja 24 java http-status-codes okhttp

我正在使用OkHttp来获取某些网站的内容.

但是,我无法从响应中获取Http-Status Code.

我的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();
Run Code Online (Sandbox Code Playgroud)

这个方法:

httpResponse.toString(); 
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

Response{protocol=http/1.1, code=200, message=OK, url=https://www.google.at}
Run Code Online (Sandbox Code Playgroud)

有没有办法将statusCode作为一个整数,或者我是否需要一个正则表达式来过滤掉这个toString()方法?

din*_*dev 52

您可以使用HttpResponse类并使用它来访问状态代码,如下所示;

HttpResponse httpResponse = client.newCall(request).execute(); 
httpResponse.getStatusLine().getStatusCode();
Run Code Online (Sandbox Code Playgroud)

如果您使用的是com.squareup.okhttp.Response,则可以使用code()方法获取HTTP状态代码.

Response httpResponse = client.newCall(request).execute(); 
httpResponse.code();
Run Code Online (Sandbox Code Playgroud)

  • execute-function返回一个`com.squareup.okhttp.Response`-对象,而不是`org.apache.http.HttpResponse`对象 (4认同)

sav*_*ion 27

你可以得到回复:

Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

并获得响应状态代码:

int responseCode = response.code();
Run Code Online (Sandbox Code Playgroud)