首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有方法从Java11的HttpClient的HTTP1.1响应的状态行中获取原因短语吗?

有方法从Java11的HttpClient的HTTP1.1响应的状态行中获取原因短语吗?
EN

Stack Overflow用户
提问于 2020-08-22 19:04:20
回答 2查看 1.2K关注 0票数 5

使用Java的java.net.HttpURLConnection,有一个getResponseMessage()方法来检索任何Reason-Phrase文本(由RFC2616 6.1状态线指定)。

在更新的Java11 HttpClient中,java.net.http.HttpResponse只有一个statusCode()方法。

是否有使用此API获取状态行末尾返回的文本的方法?若否,为何不包括在内?(我知道HTTP2 没有定义这个值,但大多数应用程序仍然使用HTTP1.1,如果它仍然有效的话)。

EN

回答 2

Stack Overflow用户

发布于 2021-05-25 06:03:59

我正在寻找Java中的http状态代码原因短语,并在我的Google搜索中找到了这个讨论。最后,我编写了我自己的函数,我想共享它,以防其他人发现它有用。它可能不完整,但它符合我的目的。

代码语言:javascript
复制
public static String getReasonPhrase(int statusCode) {
    switch(statusCode) {
        case (200): return "OK";
        case (201): return "Created";
        case (202): return "Accepted";
        case (203): return "Non Authoritative Information";
        case (204): return "No Content";
        case (205): return "Reset Content";
        case (206): return "Partial Content";
        case (207): return "Partial Update OK";
        case (300): return "Mutliple Choices";
        case (301): return "Moved Permanently";
        case (302): return "Moved Temporarily";
        case (303): return "See Other";
        case (304): return "Not Modified";
        case (305): return "Use Proxy";
        case (307): return "Temporary Redirect";
        case (400): return "Bad Request";
        case (401): return "Unauthorized";
        case (402): return "Payment Required";
        case (403): return "Forbidden";
        case (404): return "Not Found";
        case (405): return "Method Not Allowed";
        case (406): return "Not Acceptable";
        case (407): return "Proxy Authentication Required";
        case (408): return "Request Timeout";
        case (409): return "Conflict";
        case (410): return "Gone";
        case (411): return "Length Required";
        case (412): return "Precondition Failed";
        case (413): return "Request Entity Too Large";
        case (414): return "Request-URI Too Long";
        case (415): return "Unsupported Media Type";
        case (416): return "Requested Range Not Satisfiable";
        case (417): return "Expectation Failed";
        case (418): return "Reauthentication Required";
        case (419): return "Proxy Reauthentication Required";
        case (422): return "Unprocessable Entity";
        case (423): return "Locked";
        case (424): return "Failed Dependency";
        case (500): return "Server Error";
        case (501): return "Not Implemented";
        case (502): return "Bad Gateway";
        case (503): return "Service Unavailable";
        case (504): return "Gateway Timeout";
        case (505): return "HTTP Version Not Supported";
        case (507): return "Insufficient Storage";
        default: return "";
    }
}
票数 1
EN

Stack Overflow用户

发布于 2020-08-25 09:19:51

正如您注意到的,HttpResponse没有提供任何API来获取原因短语。没有什么隐藏的方法可以得到它。您有一个用例吗?在这个用例中,使用HttpResponse中的原因短语访问器是有用的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63540068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档