php - 使用 ZendFramework2 请求 Random.org API

标签 php json zend-framework2

我对 ZF2 还很陌生,我想使用外部 API 创建一些应用程序。我已经成功创建了向 random.org API 发送请求的方法,但作为响应,它向我发送了一个与解析相关的错误。我不知道我做错了什么,也不知道如何改进我的方法以获得正确的数据响应。

这是我用来发送请求的方法(我故意更改了 api key ,并且在我的应用程序中使用了正确的 key ):

public function makeRequest()
{
    $data = array(
        'jsonrpc' => '2.0',
        'method' => 'generateIntegers',
        'params' => array(
            'apiKey' => '00000000-0000-0000-0000-000000000000',
            'n' => 10,
            'min' => 1,
            'max' => 10,
            'replacement' => true,
            "base" => 10),
        'id' => 23866,
    );

    $client = new Client('https://api.random.org/json-rpc/1/invoke', array(
        'adapter' => 'Zend\Http\Client\Adapter\Curl'
    ));
    $client->setEncType(Client::ENC_FORMDATA);

    $request = new Request();
    $request->setUri('https://api.random.org/json-rpc/1/invoke');
    $request->setMethod('POST');
    $request->getPost()->fromString(json_encode($data));
    $response = $client->send($request);

    return $response;
}

以下是响应内容:

["content":protected]=> string(87) "{"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error","data":null},"id":null}

最佳答案

来自ZF2 Request Reference ,你可以找到 setContent() 函数,你可以尝试用它来代替 getPost()->fromString() 吗?

public function makeRequest()
{
    $data = array(
        'jsonrpc' => '2.0',
        'method' => 'generateIntegers',
        'params' => array(
            'apiKey' => '00000000-0000-0000-0000-000000000000',
            'n' => 10,
            'min' => 1,
            'max' => 10,
            'replacement' => true,
            "base" => 10),
        'id' => 23866,
    );

    $client = new Client('https://api.random.org/json-rpc/1/invoke', array(
        'adapter' => 'Zend\Http\Client\Adapter\Curl'
    ));
    $client->setEncType(Client::ENC_FORMDATA);

    $request = new Request();
    $request->setUri('https://api.random.org/json-rpc/1/invoke');
    $request->setMethod('POST');


    //$request->getPost()->fromString(json_encode($data));
    $request->setContent(json_encode($data));

    $response = $client->send($request);

    return $response;
}

关于php - 使用 ZendFramework2 请求 Random.org API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729171/

相关文章:

php - WAMP Curl 安装

json - ElasticSearch-将查询匹配与通配符组合

zend-framework2 - ZF2 - 供应商模块 ZFcUser 的覆盖配置

php - Zend Framework 2 和 Doctrine 2 - 多个数据库的配置

php - 在 zend 框架 2 中不是空条件

php - 如何获取具有空值的数组键列表?

javascript - 如何使用jquery在按钮单击时显示表单?

javascript - 使用 $.getJSON 的 Mustache JS

php - 在php中实现线程消息系统

Android 提高了使用 JSON 数据填充表布局时的性能