目录
查看响应
响应示例
标题
日期
服务器
X-Powered-By
X-服务器
过期
缓存控制
变化
内容长度
连接
内容类型
正文
响应
代码和消息
Cookie
结论
首页 后端开发 php教程 探索 WordPress HTTP API:了解 wp_remote_get 及其响应

探索 WordPress HTTP API:了解 wp_remote_get 及其响应

Aug 31, 2023 pm 11:25 PM

探索 WordPress HTTP API:了解 wp_remote_get 及其响应

在本系列中,我们研究了 wp_remote_get WordPress HTTP API 函数,以了解它的工作原理、如何使用它以及它接受的可选参数。

从这里,我们可以编写详细的请求;然而,这只是一半 - 还有响应。

在第二篇文章中,我们了解了基本响应是什么样子、如何评估它以及如何在屏幕上显示它,但我们实际上并没有详细讨论响应。 p>

如果您希望编写更高级的请求并编写更多的防御性代码,那么了解作为响应发送的数据非常重要。在最后一篇文章中,我们将做到这一点。


查看响应

首先,理解我所说的编写防御性代码的含义很重要:在编写软件时,我们经常必须处理用户可能做错事、输入可能设置不正确或者数据可能被检索或接收的情况- 例如在响应的情况下 - 不正确。

为此,我们针对这些场景进行防御性编码,以便我们的软件在用户使用时不会完全崩溃或崩溃。相反,它会优雅地失败并继续运行。

通过了解函数到底接收到什么来响应其请求,我们知道要查找哪些数据,然后当它没有按我们预期返回时如何优雅地处理这种情况。

响应示例

为了为预期做好准备,让我们看一下示例响应。假设您要向 URL 发出 GET 请求,该请求将向您返回一段简单的文本。

一般来说,您可能会提出更复杂的请求,其中响应可能是 XML 或 JSON 或其他内容;但是,所有这些信息都将设置在响应数组的 body 索引中。因此,如果您了解会发生什么,那么您就知道如何处理它。

话虽如此,这是您期望从对域的简单请求收到的响应,该请求只返回纯文本。

Array
(
    [headers] => Array (
            [date]          => Thu, 30 Sep 2010 15:16:36 GMT
            [server]        => Apache
            [x-powered-by]  => PHP/5.3.3
            [x-server]      => 10.90.6.243
            [expires]       => Thu, 30 Sep 2010 03:16:36 GMT
            [cache-control] => Array (
                    [0] => no-store, no-cache, must-revalidate
                    [1] => post-check=0, pre-check=0
            )
            [vary]           => Accept-Encoding
            [content-length] => 1641
            [connection]     => close
            [content-type]   => application/php
        )
    [body]     => 'A simple bit of text.'
    [response] => Array (
				    [code] => 200
				    [message] => OK
			   )
    [cookies] => Array()
)
登录后复制

只不过是一个数组(或者实际上是一个数组的数组)。没什么坏的,对吧?

让我们详细查看每个响应元素。

标题

从上面的响应中可以看出,标头实际上是由另一个包含其他信息的数组组成的。

在查看上面的每条信息之前,了解标头到底是什么非常重要。简而言之,标头提供有关客户端和服务器之间存在的请求/响应通信的信息。

可以发回各种各样的标头(其中许多超出了本文的范围),但所有这些标头不仅可以帮助我们获取有关请求的信息,还可以帮助我们获取有关请求的服务器的信息。我们正在沟通。

话虽如此,让我们详细看看每个标头元素。

日期

显然,这是一个非常容易理解的元素:简单地说,这是消息发送的日期和时间。它显然包括格林威治标准时间的星期、日期和时间,格林威治标准时间是全球时间标准。

服务器

服务器元素指的是服务器运行的软件类型。通常,您可能会看到 Apache;然而,现在还有其他可用的服务器应用程序,例如 IIS 和即将推出的 nginx。

X-Powered-By

X-Powered-By 是指为通信事务提供支持的服务器软件。在我们的例子中,我们看到 PHP,这仅仅意味着我们的请求被发送到运行 Apache 和 PHP 的服务器。

但情况可能并不总是如此。

例如,您最终可能会与运行 nginx 和 Python 的服务器或运行 Ruby on Rails 的其他类型的服务器软件进行通信。

X-服务器

此特定响应元素指的是请求发送到的服务器的 IP 地址。我很少需要知道这些特定的信息;但是,如果您最终得到意外响应,尽管所有其他信息看起来都按顺序进行,那么了解服务器的 IP 是否与您期望的请求发送到的域相匹配可能会有所帮助。

过期

每当发出请求并发送响应时,可以说该响应都有生命周期。

更具体地说,响应在一段时间后将被视为“过时”。显然,响应被视为过时的时间就是响应被认为已过期的时间。

响应被视为非过时的时间取决于服务器的配置,但时间戳与请求日期的格式相同。

缓存控制

缓存控制是指网络浏览器(或客户端和服务器之间存在的其他缓存机制)可能或可能无法使用第一个响应作为未来请求的响应的概念。 p>

例如,如果服务器响应no-cache,则意味着请求机器的浏览器、服务器或其他代理软件或缓存机制必须将每个响应视为新响应。另一方面,如果 no-cache 未指定,则第一个响应可能是您能够获得的唯一响应(至少在缓存设置为过期之前) .

这显然由两个索引组成:

  1. 第一个索引包含no-cache是否已设置
  2. 第二个索引包含数据是否已缓存的信息。简单地说,如果 post-check pre-check 间隔已过期,则将请求更新版本的数据;否则,将检索缓存的版本。

缓存的这个特定方面超出了本系列的范围,因为可以编写和解释更多内容;但是,上面的定义应该足以帮助解释您所看到的标头。

变化

此标头值与 Cache-Control 标头类似,它告诉请求服务器如何处理类似的后续请求。

一般来说,这将指示服务器是否可以使用缓存响应,或者必须检索新值。这是另一个可能变得过于复杂的元素,但为了尝试将解释提炼为我们正在讨论的范围更广的内容,变化标头元素还可以向服务器指示服务器所需要的各种内容类型。 客户端可以处理。

因此,在上面的示例中,我们指示服务器我们的客户端能够处理编码信息。

内容长度

内容长度是一个简单的概念,有一个陷阱:首先,它简单地定义了响应正文的长度。

问题是,它以 8 位字节进行。这意味着响应不是以千字节、兆字节或我们通常看到的任何形式的数据提供的。

为此,如果您希望收集有关返回数据的更丰富的信息,则可能需要执行一些转换。

连接

连接值指定请求浏览器首选的连接类型。上面,我们看到该值被定义为“close”,这意味着一旦发送响应,就可以关闭连接。

但是,还有其他选择。例如,您可能会收到“keep-alive”,显然,它希望将连接保持活动一段时间。

这又是一个需要单独的文章来充分讨论的例子;但是,这确实可以深入了解服务器喜欢的连接类型,这可以帮助您构建未来的请求。

内容类型

这实际上只与 POSTPUSH 请求相关。简而言之,这定义了请求的正文类型。

这可能因发送的数据而异。有时它可能是一个编码的 URL,有时它可能是 PHP,有时它可能是其他东西。无论如何,这有助于确保我们可以检查内容中返回的数据是否符合我们根据请求所期望的数据。

正文

body元素实际上包含了从服务器返回的信息。

在前两篇文章的示例中,我们收到了来自 Twitter 的 JSON 字符串。在上面的示例中,我们收到一个简单的文本字符串。最终,响应可能会以某种形式的二进制数据返回,需要一定程度的反序列化。

无论如何,作为请求的实现者,我们有责任了解如何在向用户显示响应之前正确解码响应。

响应

响应实际上是指从服务器发送回请求客户端的HTTP响应代码。如果您不熟悉 HTTP 状态代码,那么我建议您查看 HTTPStat.us,以获得非常好的参考。

简而言之,响应由数字代码和基于文本的消息组成,用于指示请求的结果。

代码和消息

在上面的示例中,您可以看到我们收到了“200”状态代码和“OK”消息。代码和消息对应始终彼此同步。

这意味着,如果您收到“403”,那么您还应该收到“禁止”消息,或者如果您收到“404”,那么您应该收到“未找到”消息。

就我个人而言,我发现这些特定值对于诊断我提出的请求是否出现问题非常重要。

最后,cookie 数组指的是基于当前客户端和进行通信的服务器之间存在的 cookie 通过网络发送的任何信息。

根据您请求的性质,这可能为空,也可能不为空 - 这根据具体情况变化太大,无法提供任何明确的指导。简而言之,如果两个连接之间没有建立 cookie,那么该连接很可能始终为空;否则,组成 cookie 数组的数据将专门基于两个服务之间存在的 cookie。


结论

总体而言,数据量相当大,并且根据您要求接收的内容以及服务器的响应,数据因请求而异;然而,问题是您现在知道会发生什么以及如何正确处理所有情况。

如果你的工作变得更糟,你可以随时使用调试器或简单地放置一些调试语句,例如 print_rvar_dump 来查看服务器返回的内容,以便你可以优雅地处理错误。

稍后,我们将重新访问 WordPress HTTP API 以检查其他方法,例如 wp_remote_postwp_remote_request,以便我们全面了解 HTTP API。

到那时,本系列将有望为您提供对 wp_remote_get 的尽可能深入的介绍,不仅可以帮助您改进工作,还可以激发您对远程请求方面还有什么可能的好奇心。

以上是探索 WordPress HTTP API:了解 wp_remote_get 及其响应的详细内容。更多信息请关注PHP中文网其他相关文章!

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP 8.1中的枚举(枚举)是什么? PHP 8.1中的枚举(枚举)是什么? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

什么是REST API设计原理? 什么是REST API设计原理? Apr 04, 2025 am 12:01 AM

RESTAPI设计原则包括资源定义、URI设计、HTTP方法使用、状态码使用、版本控制和HATEOAS。1.资源应使用名词表示并保持层次结构。2.HTTP方法应符合其语义,如GET用于获取资源。3.状态码应正确使用,如404表示资源不存在。4.版本控制可通过URI或头部实现。5.HATEOAS通过响应中的链接引导客户端操作。

您如何在PHP中有效处理异常(尝试,捕捉,最后,投掷)? 您如何在PHP中有效处理异常(尝试,捕捉,最后,投掷)? Apr 05, 2025 am 12:03 AM

在PHP中,异常处理通过try,catch,finally,和throw关键字实现。1)try块包围可能抛出异常的代码;2)catch块处理异常;3)finally块确保代码始终执行;4)throw用于手动抛出异常。这些机制帮助提升代码的健壮性和可维护性。

PHP中的匿名类是什么?您何时可以使用它们? PHP中的匿名类是什么?您何时可以使用它们? Apr 04, 2025 am 12:02 AM

匿名类在PHP中的主要作用是创建一次性使用的对象。1.匿名类允许在代码中直接定义没有名字的类,适用于临时需求。2.它们可以继承类或实现接口,增加灵活性。3.使用时需注意性能和代码可读性,避免重复定义相同的匿名类。

See all articles