【问题标题】:ZF2 Extract headers from responseZF2 从响应中提取标头
【发布时间】:2013-02-11 16:24:36
【问题描述】:

我将 cURL 与 zend 框架结合使用,它会返回标题和站点内容。

我在另一个类中使用此输出,我想从 curl 输出中提取标题以查看语言是否为 ser(内容语言)。

输出具有受保护的类,例如响应和标头,我尝试设置类标头和响应以尝试通过此获取标头值,但它没有给我任何结果。

(卷曲输出 => $this->内容)

class Zend\Http\Response#258 (7) { protected $recommendedReasonPhrases => array(57) { [100] => string(8) "Continue"

[101] => string(19) "交换协议" [102] => string(10) “正在处理”[200] => 字符串(2)“确定”[201] => 字符串(7)“已创建” [202] => string(8) "接受" [203] => string(29) "非权威 信息”[204] => 字符串(10)“无内容”[205] => 字符串(13) “重置内容”[206] => 字符串(15)“部分内容”[207] => 字符串(12)“多状态”[208] => 字符串(16)“已报告”[300] => string(16) "多项选择" [301] => string(17) "永久移动" [302] => string(5) "找到" [303] => string(9) "查看其他" [304] => string(12) "未修改" [305] => string(9) "使用代理" [306] => string(12) "切换代理" [307] => string(18) "临时 重定向”[400] => 字符串(11)“错误请求”[401] => 字符串(12) “未经授权” [402] => 字符串(16)“需要付款” [403] => 字符串(9)“禁止”[404] => 字符串(9)“未找到”[405] => 字符串(18)“不允许的方法”[406] => 字符串(14)“不可接受” [407] => 字符串(29)“需要代理身份验证”[408] => 字符串(16)“请求超时”[409] => 字符串(8)“冲突”[410] => 字符串(4)“消失”[411] => 字符串(15)“需要长度”[412] => string(19) "前置条件失败" [413] => string(24) "请求实体 太大”[414] => 字符串(21)“请求 URI 太大”[415] => string(22) "不支持的媒体类型" [416] => string(31) "请求 范围不可满足” [417] => string(18) “预期失败” [418] => string(12) "我是茶壶" [422] => string(20) "无法处理的实体" [423] => string(6) "锁定" [424] => string(17) "失败 依赖”[425] => 字符串(20)“无序集合”[426] => string(16) "需要升级" [428] => string(21) "前提条件 必需”[429] => 字符串(17)“请求过多”[431] => 字符串(31) “请求标头字段太大”[500] => string(21)“内部服务器 错误”[501] => 字符串(15)“未实现”[502] => 字符串(11)“错误 网关”[503] => 字符串(19)“服务不可用”[504] => 字符串(16) “网关超时”[505] => string(26)“不支持 HTTP 版本” [506] => 字符串(23)“变体也协商”[507] => 字符串(20) “存储空间不足”[508] => 字符串(13)“检测到循环”[511] => string(31) "需要网络认证" } protected $statusCode => int(200) protected $reasonPhrase => string(2) "OK" protected $version => string(3) "1.1" protected $headers => class Zend\Http\Headers#257 (3) { protected $pluginClassLoader => NULL 受保护的 $headersKeys => 数组(15){ [0] => 字符串(4)“日期”[1] => 字符串(6)“服务器”[2] => 字符串(10)“xpoweredby”[3] => 字符串(12) “xdrupalcache”[4] => 字符串(7)“过期”[5] => 字符串(12) "lastmodified" [6] => 字符串(12) "cachecontrol" [7] => 字符串(4) “etag” [8] => 字符串(15) “内容语言” [9] => 字符串(10) “xgenerator” [10] => 字符串(4) “变化” [11] => 字符串(15) “内容编码”[12] => 字符串(13)“内容长度”[13] => 字符串(10)“连接”[14] => 字符串(11)“内容类型”} 受保护 $headers => array(15) { [0] => array(2) { 'name' => string(4) "日期" 'line' => string(35) "日期:2013 年 2 月 26 日星期二 09:57:42 GMT" } [1] => 数组(2){'名称'=>字符串(6)“服务器”“行”=>字符串(30)“服务器: Apache/2.2.14 (Ubuntu)" } [2] => array(2) { 'name' => string(12) "X-Powered-By" 'line' => string(35) "X-Powered-By: PHP/5.3.2-1ubuntu4.18" } [3] => array(2) { 'name' => string(14) "X-Drupal-Cache" 'line' => string(20) "X-Drupal-Cache: MISS" } [4] => 数组(2){“名称”=>字符串(7)“过期”“行”=>字符串(38) “过期时间:星期日,1978 年 11 月 19 日 05:00:00 GMT”} [5] => array(2) { 'name' => string(13) "Last-Modified" 'line' => string(46) "Last-Modified: Tue, 2013 年 2 月 26 日 09:57:42 +0000" } [6] => array(2) { 'name' => string(13) "Cache-Control" 'line' => string(32) "Cache-Control: public, max-age=0" } [7] => array(2) { 'name' => string(4) "ETag" 'line' => string(20) "ETag: "1361872662-1"" } [8] => array(2) { 'name' => 字符串(16)“内容语言”'行'=>字符串(20)“内容语言: ru" } [9] => array(2) { 'name' => string(11) "X-Generator" 'line' => string(41) "X-Generator: Drupal 7 (http://drupal.org)" } [10] => 数组(2){'名称'=>字符串(4)“变化”“行”=>字符串(28)“变化: Cookie,接受编码“} [11] => 数组(2){ '名称' => 字符串(16) “内容编码”'line' => 字符串(22)“内容编码:gzip”} [12] => 数组(2) { 'name' => string(14) "Content-Length" 'line' => 字符串(20)“内容长度:7139”} [13] => 数组(2){ 'name' => 字符串(10)“连接”'线'=>字符串(17)“连接:关闭”} [14] => array(2) { 'name' => string(12) "Content-Type" 'line' => 字符串(38)“内容类型:文本/html;字符集=utf-8”}}}受保护 $metadata => array(0) { } protected $content => string(23711)

(代码)

   $response = new Response();
    $response->getHeaders($this->content);
    $headers = new Headers();
    var_dump($headers->get('Content-Language'));

(生成)

bool(false)

($response->getHeaders 的var_dump)

类 Zend\Http\Headers#259 (3) { protected $pluginClassLoader => NULL 受保护的 $headersKeys => 数组(0){ } 受保护的 $headers => 数组(0) { } }

提前致谢,

尼克

【问题讨论】:

  • 你能添加你当前(不工作)的代码吗?
  • 只是更新我的帖子 :)
  • 你为什么要$headers = new Headers();
  • 我尝试了这个,因为它的功能描述'获取某个名称/类型的所有标题'我需要从 $this->content 中提取'Content-Language'标题
  • 那么它是var_dump($this->content->getHeaders()->get('Content-Language');。似乎您假设了太多魔法;) ZF2 中的构造函数往往在设计上什么都不做,并且通常不读取环境变量。

标签: class curl header zend-framework2 protected


【解决方案1】:

您不应构建新的Zend\Http\Response 或新的Zend\Http\Headers,而只需在当前上下文中使用$this->content 中已有的那些:

var_dump($this->content->getHeaders()->get('Content-Language'));

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2022-08-10
    • 1970-01-01
    相关资源
    最近更新 更多