【问题标题】:PHP CallFire SDK - Authentication and Request/Response problemsPHP CallFire SDK - 身份验证和请求/响应问题
【发布时间】:2014-08-16 20:37:26
【问题描述】:

免责声明:php新手学生在这里真的很努力。

我正在尝试构建一个与CallFire API 交互的应用程序。

此时,我想要实现的只是与 API 建立通信并成功启动请求/响应周期。

我已经在我的 XAMPP 本地服务器上安装了带有 Composer 的 Callfire SDK 依赖项。我想让 this 运行非常基本的示例:它实例化 API,发送请求并解析响应。

<?php
use CallFire\Api\Rest\Request;
require 'vendor/autoload.php';

$client = CallFire\Api\Client::Rest("<api-login>", "<api-password>", "Broadcast"); //I'm using my valid CallFire API keys here.

$request = new Request\QueryBroadcasts;
$response = $client->QueryBroadcasts($request); //LINE 10

$broadcasts = $client::response($response);

foreach($broadcasts as $broadcast) {
    var_dump($broadcast);
}

我将此代码放在 index.php 文件中,当我在浏览器中运行它时,我得到:

Notice: Trying to get property of non-object in C:\xampp\htdocs\cfireapi1\vendor\callfire\php-sdk\src\CallFire\Api\Rest\Response.php on line 39

Notice: Trying to get property of non-object in C:\xampp\htdocs\cfireapi1\vendor\callfire\php-sdk\src\CallFire\Api\Rest\Response.php on line 39

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Response type not recognized' in C:\xampp\htdocs\cfireapi1\vendor\callfire\php-sdk\src\CallFire\Api\Rest\Response.php:50 
Stack trace: #0 C:\xampp\htdocs\cfireapi1\vendor\callfire\php-sdk\src\CallFire\Api\Rest\AbstractClient.php(59): CallFire\Api\Rest\Response::fromXml(false) 
#1 C:\xampp\htdocs\cfireapi1\index.php(10): CallFire\Api\Rest\AbstractClient::response(false) 
#2 {main} thrown in C:\xampp\htdocs\cfireapi1\vendor\callfire\php-sdk\src\CallFire\Api\Rest\Response.php on line 50

AbstractClient.php 中的第 59 行是

public static function response($data, $type = self::FORMAT_XML)
{
    if (is_string($data) && strlen($data) === 0) {
        return true; // Many operations return an empty string for success
    }
    switch ($type) {
        case static::FORMAT_XML:
            return AbstractResponse::fromXml($data); // LINE 59
        case static::FORMAT_JSON:
            return AbstractResponse::fromJson($data);
    }
    throw new InvalidArgumentException("Type must be 'xml' or 'json'");
}

Response.php 中的第 39 行和第 50 行是

public static function fromXml($document)
    {
        $document = static::getXmlDocument($document);
        // return print_r($document);
        switch ($document->firstChild->nodeName) { // LINE 39 error for this line is Notice: Trying to get property of non-object 
            case 'r:ResourceList':
                return Response\ResourceList::fromXml($document);
            case 'r:Resource':
                return Response\Resource::fromXml($document);
            case 'r:ResourceReference':
                return Response\ResourceReference::fromXml($document);
            case 'r:ResourceException':
                return Response\ResourceException::fromXml($document);
        }
        throw new UnexpectedValueException('Response type not recognized'); // LINE 50: this is what throws the fatal error exception 


    }

第 10 行在示例代码中突出显示。

所以我知道 API 正在发回一个类型不明的响应。为什么,如果我从字面上使用 SDK 和文档中的基本示例之一?如何检查我得到的响应以了解它到底是什么?我尝试在 Response.php 文件中使用 r_print 打印响应,但我在浏览器中打印了一个“1”。这对我来说没有意义。是因为我在浏览器中运行这个吗?

【问题讨论】:

    标签: php sdk composer-php callfire


    【解决方案1】:

    已解决:在 localhost 环境中以某种方式运行程序导致了问题。将应用程序上传到服务器后,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      相关资源
      最近更新 更多