【问题标题】:PHP: Parse Web API response in LaravelPHP:在 Laravel 中解析 Web API 响应
【发布时间】:2018-11-30 17:51:00
【问题描述】:

我必须在 Laravel 中使用旧的 Web API。

响应正文如下所示:

TRANSACTION_ID: KJASDFYDSF^SDFHJSD/2236
STATUS: OK
DATE: 01/03/18

如何使用 Guzzle 6 将响应转换为数组?

【问题讨论】:

  • 你为什么要把它解析成 JSON?
  • 不要将响应转换为 JSON,只需解析该格式的响应。无论如何,转换为 JSON 都需要您先解析响应,那么为什么要添加额外的 - 无用 - 步骤?
  • 我需要从响应中获取 TRANSACTION_ID、STATUS 和其他属性。是否可以使用 Guzzle 自动执行此操作,或者我需要使用 Regex 解析它们?
  • 您必须手动解析它们。给定的格式不是标准。通常它是作为 JSON/xml/querystring 发送的,但这你必须手动解析

标签: php laravel guzzle guzzle6


【解决方案1】:

这是解析响应的解决方案:

private function parseResponse(\GuzzleHttp\Psr7\Response $response) {
    $body = $response->getBody();
    $body->rewind();
    $content = (string) $body->getContents();
    $lines = explode(PHP_EOL, $content);
    $result = [];

    foreach ($lines as $line) {
        $chunks = explode(':', $line);
        $result[trim($chunks[0])] = trim($chunks[1]);
    }

    return $result;
}

【讨论】:

  • 另外最好用第三个explode()调用$limit参数:$chunks = explode(':', $line, 2);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2016-12-14
  • 1970-01-01
  • 2015-11-30
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多