目录
钥匙要点
的URL
curlopt_url - 文件的URL,请注意使用“ ftp://”而不是“ http://”
发送多个请求
>故障排除
结论
curl是什么,为什么它在php?
curl或客户端URL中使用,是一个允许您在PHP中提出HTTP请求的库。它用于与不同类型的服务器进行通信并下载或上传数据。 Curl支持HTTP,HTTP,FTP等各种协议。这是一个强大的工具,可用于与API进行交互,刮擦网页甚至下载文件。
>
>如何使用curl?
>您可以使用curlopt_httpheader选项。此选项将标题数组作为其值。以下是一个示例:
要遵循重定向,您需要将curlopt_followlocation选项设置为true。您可以做到这一点:
>我如何从curl请求中获取响应标头?响应标头,您可以将curlopt_header选项设置为true。这将包括输出中的标题。这是一个示例:
首页 后端开发 php教程 PHP主|使用卷曲来远程请求

PHP主|使用卷曲来远程请求

Feb 23, 2025 am 10:14 AM

PHP Master | Using cURL for Remote Requests

PHP主|使用卷曲来远程请求

如果您是Linux用户,那么您可能已经使用了卷发。这是一个强大的工具,用于从发送电子邮件到下载最新的《我的小马匹》字幕。在本文中,我将解释如何在PHP中使用卷曲扩展。该扩展名为我们提供了PHP舒适世界中的主机实用程序的功能。我将讨论发送和发布请求,处理登录cookie和FTP功能。 在开始之前,请确保您安装了扩展名(和libcurl库)。默认情况下不安装它。在大多数情况下,可以使用系统的软件包管理器安装它,但是除非您可以在PHP手册中找到说明。

钥匙要点

  • curl是一种功能强大的工具,用于从发送电子邮件到下载字幕的各种任务,可以通过提供与控制台实用程序相同的功能的扩展。
  • curl可用于检索网页,登录网站,使用FTP并发送多个请求。例如,您可以通过发送带有特定详细信息的发布请求来模拟登录到WordPress驱动的网站。
  • 使用两个函数简化了
  • 故障排除卷曲请求:curl_getinfo()和curl_error()。这些功能提供了有关频道以及请求期间可能发生的任何错误的详细信息。
  • 卷曲是一种进行远程调用的高效且强大的工具,使其非常适合访问外部API或爬行等任务。它提供了一个用户友好的界面和请求相对容易执行。
  • >
  • 如何工作?
> 所有卷曲请求遵循相同的基本模式:

首先,我们通过调用curl_init()函数来初始化卷曲资源(通常为“ curl hander”> ch> ch
    )。
  1. 接下来,我们将设置各种选项,例如URL,请求方法,有效负载数据等。可以使用Curl_setopt()单独设置选项,或者我们可以将选项数组传递到Curl_setopt_array()。 然后,我们通过调用curl_exec()。>执行请求
  2. 最后,我们释放了资源以清除内存。
  3. >
  4. 因此,用于提出请求的样板代码看起来像这样:
  5. 为请求而更改的唯一一件事是设置了哪些选项,哪些选项当然取决于您对卷发的工作。
  6. 检索网页
  7. 我能想到的最基本的示例是仅获取网页的内容。因此,让我们以BBC的主页为例。
  8. 检查浏览器中的输出,您应该看到显示的BBC网站。我们很幸运,因为该站点的显示正确,因为它的绝对链接到样式表和图像。 我们刚刚使用的选项是:
<span><span><?php
</span></span><span><span>// init the resource
</span></span><span><span>$ch = curl_init();
</span></span><span>
</span><span><span>// set a single option...
</span></span><span><span>curl_setopt($ch, OPTION, $value);
</span></span><span><span>// ... or an array of options
</span></span><span><span>curl_setopt_array($ch, array(
</span></span><span><span>OPTION1 => $value1,
</span></span><span><span>OPTION2 => $value2
</span></span><span><span>));
</span></span><span>
</span><span><span>// execute
</span></span><span><span>$output = curl_exec($ch);
</span></span><span>
</span><span><span>// free
</span></span><span><span>curl_close($ch);</span></span>
登录后复制
登录后复制
登录后复制
登录后复制
curlopt_url - 指定请求

的URL

  • > curlopt_returntransfer - 设置false时,curl_exec()根据请求的成功返回true或false。设置为true时,curl_exec()返回响应的内容。
  • >登录到网站

    卷发执行了检索BBC页面的GET请求,但是Curl也可以使用其他方法,例如POST和PUT。在此示例中,让我们模拟登录以WordPress为动力的网站。登录是通过将POST请求发送到>的登录名来完成: 登录 - 用户名
      >
    • > PWD - 密码
    • redirect_to - 登录
    • >之后我们要转到的URL
    • > TestCookie - 应将其设置为1(仅适用于WordPress) 当然,这些参数对每个站点都有特定。您应该始终自己检查输入名称,这可以通过查看浏览器中的HTML页面的来源很容易完成。
    • 新选项是:
    > curlopt_post - 如果要发送邮政请求
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    ,请设置此true
      > curlopt_postfields - 将在请求正文中发送的数据
    • >
    • curlopt_followlocation - 如果设置为true,则curl将遵循重定向
    • 哦!但是,如果您测试上述内容,则会看到一个错误消息:“错误:cookie被浏览器阻止或不支持。您必须允许cookie使用WordPress。”这是正常的,因为我们需要启用cookie才能工作。我们通过添加两个选项来做到这一点。
    • 新选项是:
    > curlopt_cookiesession-如果设置为true,curl将启动新的cookie会话,而忽略任何以前
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    登录后复制
    > curlopt_cookiejar - 这是文件的名称,其中curl应保存cookie信息。确保您有正确写入文件的权限!
      >
    • 现在我们已登录,我们只需要引用cookie文件以获取后续请求。
    • 与FTP
    • 一起工作 使用Curl通过FTP下载和上传文件也很容易。让我们看下载文件:
    • 请注意,出于安全原因,没有太多允许匿名上传和下载的公共FTP服务器,因此上面的URL和凭据只是位置持有人。 这与发送HTTP请求几乎相同,但只有几个较小的差异:

    curlopt_url - 文件的URL,请注意使用“ ftp://”而不是“ http://”

    <span><span><?php
    </span></span><span><span>$postData = array(
    </span></span><span><span>'login' => 'acogneau',
    </span></span><span><span>'pwd' => 'secretpassword',
    </span></span><span><span>'redirect_to' => 'http://example.com',
    </span></span><span><span>'testcookie' => '1'
    </span></span><span><span>);
    </span></span><span>
    </span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    curlot_userpwd - FTP服务器的登录凭据
    • 通过FTP上载文件的复杂稍复杂,但仍然可以管理。看起来像这样:
    • 这里的重要选择是:
    • > curlopt_upload - 显而易见的布尔
    <span><span><?php
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true,
    </span></span><span><span>CURLOPT_COOKIESESSION => true,
    </span></span><span><span>CUROPT_COOKIEJAR => 'cookie.txt'
    </span></span><span><span>));</span></span>
    登录后复制
    > curlopt_infile - 我们想要上传的文件的可读流
      > curlopt_infilesize - 我们要在字节中上传的文件大小

    发送多个请求

    想象一下,我们必须执行五个请求才能检索所有必要的数据。请记住,某些事情将无法控制,例如网络延迟和目标服务器的响应速度。那么,很明显的是,连续五次通话时的任何延误确实可以加起来!缓解此问题的一种方法是异步发出请求。 异步技术在JavaScript和Node.js社区中更为常见,但短暂地,我们不再等待耗时的任务完成,而是将任务分配给其他线程或过程,并在此期间继续做其他事情。任务完成后,我们回来以取得结果。重要的是,我们没有浪费时间等待结果;我们花了它独立执行其他代码。 执行多种异步卷曲请求的方法与以前有所不同。我们从相同的开始 - 我们启动每个频道然后设置选项 - 但是我们使用curl_multi_init()启动多手汉,并使用curl_multi_add_handle()添加我们的频道。我们通过循环并检查其状态来执行处理程序。最后,我们获得了curl_multi_getContent()的响应内容。
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    上述代码花费了大约1,100毫秒来在我的笔记本电脑上执行。依次执行请求,而无需大约2,000毫秒的多接口。想象一下,如果您发送数百个请求,您的收益将是多少! 存在多个项目,可以抽象并包装多接口。讨论它们超出了文章的范围,但是如果您打算异步发出多个请求,那么我建议您看看它们:
    • github.com/petewarden/parallelcurl
    • > semlabs.co.uk/journal/Object-Eriended-curl-class-curl-class-with-multi-threading

    >故障排除

    如果您使用的是卷曲,那么您可能正在向第三方服务器执行请求。您无法控制它们,并且可能会出错:服务器可以离线,目录结构可以改变等。我们需要一种有效的方法来找出某些事物不起作用时出了什么问题,幸运的是,Curl为此提供了两个功能: curl_getinfo()和curl_error() 。 curl_getinfo()返回一个数组,其中包含有关频道的所有信息,因此,如果要检查一切是否正确,则可以使用:
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    如果弹出错误,您可以使用curl_error()检查出来:
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    登录后复制

    结论

    Curl提供了一种强大而有效的方式来拨打远程通话,因此,如果您需要爬网或访问外部API的东西,则curl是工作的绝佳工具。它为我们提供了一个不错的接口和相对简单的执行请求的方法。有关更多信息,请访问PHP手册和Curl网站。下次见! >对本文的评论已关闭。对PHP有疑问吗?为什么不在我们的论坛上询问? 通过fotolia 图像 >常见问题(常见问题解答)有关将卷曲用于远程请求的问题

    curl是什么,为什么它在php?

    curl或客户端URL中使用,是一个允许您在PHP中提出HTTP请求的库。它用于与不同类型的服务器进行通信并下载或上传数据。 Curl支持HTTP,HTTP,FTP等各种协议。这是一个强大的工具,可用于与API进行交互,刮擦网页甚至下载文件。

    >我如何安装和启用php?

    curl通常包含在大多数中Web服务器。但是,如果不启用它,则可以通过修改php.ini文件来做到这一点。找到“; Extension = Curl”的线,然后卸下分号。如果该行不存在,则可以在文件末尾添加。更改后,保存文件并重新启动您的Web服务器。

    >如何在PHP中简单卷曲请求? curl_init()函数。然后,使用curl_setopt()函数设置您的选项。最后,使用curl_exec()执行请求,然后用curl_close()关闭会话。这是一个基本示例:

    $ ch = curl_init();

    curl_setopt($ ch,curlopt_url,“ http://example.com”);
    curl_setopt( );
    $ output = curl_exec($ ch);
    curl_close($ ch);

    >
    >如何处理curl中的错误?

    >

    >

    >
    >您可以通过使用curl_errno()和curl_error()和curl_error()和curl_error( )功能。这些函数分别返回最后一个错误编号和错误消息。以下是一个示例:

    if(curl_errno($ ch)){ echo'错误:'。 curl_error($ ch);
    }

    >如何使用curl?

    发送发布请求,以发送邮政请求,您需要将curlopt_post选项设置为true,然后将curlopt_postfields选项设置为要发送的一系列数据。以下是一个示例:

    curl_setopt($ ch,curlopt_post,1);
    curl_setopt($ ch,curlopt_postfields,“ postVar1 = value1&postvar2 = value2 = value2”)卷曲请求的标题?

    >您可以使用curlopt_httpheader选项。此选项将标题数组作为其值。以下是一个示例:

    $ headers = array(
    'content-type:application/json',
    '授权:bearer'。$ token
    );
    curl_setopt($ curl_setopt($ CH,curlopt_httpheader,$ headers);

    >我如何跟随卷曲重定向?

    >

    要遵循重定向,您需要将curlopt_followlocation选项设置为true。您可以做到这一点:


    curl_setopt($ ch,curlopt_followlocation,true);

    >我如何从curl请求中获取响应标头?响应标头,您可以将curlopt_header选项设置为true。这将包括输出中的标题。这是一个示例:

    curl_setopt($ ch,curlopt_header,true);

    如何使用curl?

    发送文件,您可以使用文件,您可以使用该文件curlopt_postfields选项,并将文件路径带有 @符号。以下是一个示例:

    curl_setopt($ ch,curlopt_postfields,array('file'=>'@/path/path/to/file.txt'));


    代理?

    用于将卷曲与代理使用,您可以将curlopt_proxy选项设置为代理的地址。您可以做到这一点:

    curl_setopt($ ch,curlopt_proxy,“ http://proxy.example.com:8080”);

    >

    以上是PHP主|使用卷曲来远程请求的详细内容。更多信息请关注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