0

0

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

WBOY

WBOY

发布时间:2023-08-31 23:25:11

|

1360人浏览过

|

来源于php中文网

原创

探索 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 间隔已过期,则将请求更新版本的数据;否则,将检索缓存的版本。

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

DALL·E 2
DALL·E 2

OpenAI基于GPT-3模型开发的AI绘图生成工具,可以根据自然语言的描述创建逼真的图像和艺术。

下载

变化

此标头值与 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 数组的数据将专门基于两个服务之间存在的 cookie。


结论

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

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

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

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

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

502

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

500

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

233

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3517

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

31

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

39

2026.01.13

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号