首页  >  文章  >  Java  >  Java HTTP 代码指南:如何了解服务器想要从您那里得到什么?

Java HTTP 代码指南:如何了解服务器想要从您那里得到什么?

Barbara Streisand
Barbara Streisand原创
2024-11-10 08:54:03394浏览

在 HTTP 代码的世界中,每个服务器响应就像来自宇宙另一端的消息。您发送了一个请求,现在这个神秘的代码出现在屏幕上。这是什么意思?我们应该如何理解呢?让我们弄清楚如何捕获来自服务器的信号而不陷入陷阱。

为什么他们甚至用代码来回答我们?

服务器就像一位好老教授。他不会每次都写长信。它在响应中使用 HTTP 代码或三位数信号来帮助您(和其他开发人员)了解正在发生的情况。他们被分为五个类别,如受人尊敬的年龄段,从明智的信息型(1xx)到反复无常的错误型(4xx和5xx)。

这是我们的主要角色:

  • 1xx:服务员若有所思地喝着咖啡,说道:“是的,是的,我正在工作,等等......”
  • 2xx:一切都很酷,请求完成,服务器很高兴。
  • 3xx:“哦,听着,你走错路了。让我给你重定向!”
  • 4xx:服务器愤慨:“你误会我了,你到底想要什么?”
  • 5xx:哦,服务器好像丢掉了一些重要的东西,然后变得混乱了。

如何判断服务器是否满意?代码 2xx
服务员就像任何内向的人一样,如果你做的一切都正确的话,他会很高兴。以下是他的认可信号:

  • 200 OK - “一切都按部就班!”请求已处理,您可以高兴了。
  • 201 已创建 - “新内容已创建,抓住它!”作为奖励,这可能是数据库中的新条目。
  • 204 无内容 - “一切都准备好了,但我没有什么可展示的。”例如,您删除了某些内容,但那里没有任何内容可显示。

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

Java 示例:如何得到这个神奇的“OK”?

HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");

if (connection.getResponseCode() == 200) {
    System.out.println("Сервер сказал ОК! Тянем данные...");
}

如果服务器不高兴怎么办?代码 4xx

这里可能已经存在问题,例如您不小心**开错了门**。

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

  • 400 错误请求 - “您的请求显然做错了。”
  • 401 未经授权 - “你是谁?我不认识你。”看来您需要密码!
  • 402 需要付款。该代码保留用于付费访问某些资源,但几乎从未使用过。如果使用它,听起来会像:“先付帐单,然后获得访问权限!”也许服务员会拿着收银机站在入口处。
  • 403 Forbidden - “嘿,即使有密码你也进不去。”显然,访问错误。
  • 404 Not Found - “它在某个地方......但它消失在某个地方。”这段代码简直就是经典。
  • 409 冲突 - “你和其他人想要同样的东西。谁会赢?”
  • 示例:服务器发出抱怨时处理错误
int responseCode = connection.getResponseCode();

if (responseCode == 404) {
    System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
    System.out.println("Ой, кажется, сюда нужен пароль.");
}

当服务器举办摇滚音乐会时:代码 5xx

然后服务器就受不了了。他想要工作,但某个地方明显出了问题。

  • 500 内部服务器错误 - 想象服务器是一位摇滚明星,他在音乐会中突然丢失了一个音符,被迫承认失败:“出了问题!”这是服务器本身不明白发生了什么时的标准反应。在代码中,它通常看起来像“一般错误,某些东西不起作用”,并且在日志中您可以看到类似“发生未知错误”的内容。
  • 501 Not Implemented - 此代码意味着服务器不知道如何处理当前请求。你可以把他想象成一名 IT 专家,被要求修理厨房的水龙头。他拿着钥匙站起来,看着水龙头说:“这不是我的专长!”如果客户端发出服务器不支持的请求,通常会发生这种情况。
  • 502 Bad Gateway 这里中间服务器(网关或代理)尝试联系另一台服务器,但它响应了一些难以理解的内容或根本没有响应
  • 503 服务不可用 - “哦,我现在不行,给我五分钟。”要么服务已关闭,要么服务器已满。如果服务器可以休息几天,这将是他最喜欢的代码。
  • 504 Gateway Timeout 此代码表示服务器没有等待本应响应请求的另一台服务器的响应。想象一下,服务器正在等待从未到来的响应。结果,服务器对客户端说:“好吧,我等了又等,但什么也没得到。”

Путеводитель по HTTP-кодам в Java: Как понять, что сервер от тебя хочет?

使用 RestTemplate:如何在 Spring 中与服务器通信

当您使用 Spring 时,您有一个用于请求的 RestTemplate 和 WebClient。它们允许您像真正的渔夫一样捕获服务器响应。

RestTemplate:捕获服务器响应

HttpURLConnection connection = (HttpURLConnection) new URL("https://easy.java.com/data").openConnection();
connection.setRequestMethod("GET");

if (connection.getResponseCode() == 200) {
    System.out.println("Сервер сказал ОК! Тянем данные...");
}

面向异步爱好者的 WebClient

WebClient 是一款适合那些不害怕以“等待,但不立即”风格工作的人的工具。就好像你在说:“服务器,尽力而为,我现在就等。”

int responseCode = connection.getResponseCode();

if (responseCode == 404) {
    System.out.println("Сервер говорит, что ничего не нашел.");
} else if (responseCode == 401) {
    System.out.println("Ой, кажется, сюда нужен пароль.");
}

建议

检查超时 - 有时服务器会冻结,你应该准时吃午饭。设置等待时间。
不要忘记日志记录 - 每个代码都很重要!记录答案,您将始终能够了解出了什么问题。
与 4xx 和 5xx 合作 - 从错误中学习。您处理此类回复的越好,您的应用程序就会越稳健。

结论

服务器是一个反复无常的生物,每次你从它收到代码时,就像你在解谜题一样。但是,了解基本代码及其含义,您可以快速了解您的要求!

记住:HTTP 代码是 Java 代码和服务器之间的通信语言。知道如何阅读它,服务器就会永远开心。

以上是Java HTTP 代码指南:如何了解服务器想要从您那里得到什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn