繁体   English   中英

使用Guzzle时如何将数据传递给侦听器?

How to pass data into a Listener when using Guzzle?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在CakePHP 2.5.6中使用了Guzzle 3.8.1,并且正在对Box API进行调用。 我希望能够在访问令牌过期时刷新访问令牌。 我遇到的问题是,我可能正在使用N个可能的访问令牌中的任何一个,并且希望能够使用要在其中定义该功能的范围内的$ account_id。我看不到如何将其传递给Listener定义的函数,因为我自己没有调用它。 我确实看到$ event变量中存在过期的access_token,但我必须找到它,然后从我传递给Box的标头中对其进行解析。 我想我可以添加一个包含account_id的自定义标头,但这似乎是解决该问题的一种坏方法。 我可以以某种方式在请求中指定一个不会作为Box调用的一部分添加的变量吗? 任何建议都非常感谢,谢谢!

`

public function get_folder_list ($account_id = null, $parent_folder_id = null) {
    // Get account
    $this->Account = ClassRegistry::init('Account');
    $account = $this->Account->findById($account_id);
    $this->Account->log($account);

    // If account doesn't exist, throw error
    if(empty($account)) {
        throw new NotFoundException(__('Account id not found: ' . $account_id));
    }

    // Call Box for folder list
    $box_url = "https://api.box.com/2.0/folders/";
    if (empty($parent_folder_id)) {
        $box_url .= "0";
    } else {
        $box_url .= $parent_folder_id;
    }
    $this->Account->log($box_url);
    $bearer = 'Bearer ' . $account['Account']['access_token'];
    $client = new Guzzle\Http\Client();

    $client->getEventDispatcher()->addListener('request.error', function(Event $event) {
        if ($event['response']->getStatusCode() == 401) {
            $Account = new Account;
            $Account->log($event);
            $Box = new BoxLib;                
            $account = $Box->refresh_token($account_id);
            $bearer = 'Bearer ' . $account['Account']['access_token'];
            $request = $client->get($box_url, array('Authorization' => $bearer));
            $event['response'] = $newResponse;

            $event->stopPropagation();
        }
    });
    $request = $client->get($box_url, array('Authorization' => $bearer));

     try {
        $response = $request->send();
     } catch (Guzzle\Http\Exception\BadResponseException $e) {
        // HTTP codes 4xx and 5xx throw BadResponseException
        $this->Account->log('Service exception!');
        $this->Account->log('Uh oh! ' . $e->getMessage());
        $this->Account->log('HTTP request URL: ' . $e->getRequest()->getUrl() . "\n");
        $this->Account->log('HTTP request: ' . $e->getRequest() . "\n");
        $this->Account->log('HTTP response status: ' . $e->getResponse()->getStatusCode() . "\n");
        $this->Account->log('HTTP response: ' . $e->getResponse() . "\n");            
     }

    $this->Account->log($response->json());
    $json = $response->json();

    $folder_list = array();
    foreach ($json['item_collection']['entries'] as $folder) {
        $folder_list[$folder['id']] = $folder['name'];
    }       
    //$this->Account->log($folder_list);

    return $folder_list;
}

`

问题暂未有回复.您可以查看右边的相关问题.
1 使用绑定将数据传递给侦听器时如何删除事件侦听器?

我正在添加一个事件侦听器,然后尝试将其删除,如下所示: 场景一 在上面的场景中,我的监听器被移除了,但是当我将一些值绑定为时它并没有被移除: 场景 2 为什么事件侦听器在 Scenario-1 而不是在 Scenario-2 中被删除? 我如何绑定像 Scenario-2 这样的值,以便 ...

3 用Javascript将其他数据传递给事件侦听器

说我有两种看法: 图库:显示草图列表,可通过www.mywebsite.com/#gallery访问 草图:显示单个草图,可以通过www.mywebsite.com/#sketch/:id访问 每次用户单击图库中的草图时,我都想转到“草图”视图,以传递被单击的草图。 我该如何进行这项工作 ...

5 将附加数据传递到休眠 postInsertEvent 侦听器

我想知道是否有任何方法可以将额外的数据项传递到 PostInsertEvent / PostUpdateEvent。 或者一种合理的方法来缓存数据项并在 PostInsertEvent/PostUpdateEvent 中匹配它。 所以例如说 在表 1 中,记录 a 有一个 id 值,我在变量中插入 ...

6 使用单击侦听器将数据传递到表格单元格的正确方法是什么

我一直试图想出一种方法来实现一个表的每个单元格的点击监听器。 我意识到选择器'td:eq(index)'允许我为每个单元格单独放置一个事件监听器。 但是,我意识到每次运行这段代码时,所有单元格都会得到变量的最后一个值。 这意味着每次代码运行时都会更新所有值,并且我无法为每个单元格分配不 ...

9 如何将数据传递给微调器

我有: data class User( var name: String, var category: String) : Serializable 和一个微调器: 为了保存数据,我这样做: 现在我想从另一种方式做同样的事情: 我不知道放什么在这里??????? 所以现在我发现了 ...

10 如何将参数传递给 Flutter 中的侦听器?

我是 Flutter 的新手,我正在关注这个关于文本字段的官方示例: https : //flutter.dev/docs/cookbook/forms/text-field-changes 有一个 axample 用于侦听文本字段小部件的控制器中的更改。 请注意这段代码_MyCustomForm ...

2019-10-22 06:34:14 1 2116   flutter
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM