-1

我创建了一个模块,我将使用 ioncube 对其进行加密。我将使用 plimus 通过 http 调用生成和验证产品密钥。plimus 说,“这个过程有两个步骤”:

  1. 通过调用注册许可证

    https://www.plimus.com/jsp/validateKey.jsp?action=REGISTER&productId=582710&key=XXX-XXXX-XXXX-XXXX[&uniqueMachineId=YYYYYYY]
    
  2. 通过调用验证许可证

    https://www.plimus.com/jsp/validateKey.jsp?action=VALIDATE&productId=582710&key=XXX-XXXX-XXXX-XXXX[&uniqueMachineId=YYYYYYY]
    

密钥将通过电子邮件发送给用户。我只需要一个 php 代码示例来执行此操作,而且我还需要一个检查许可证代码才能添加到我的模块中。

4

1 回答 1

1

虽然 PHP 可以使发出 HTTP 请求变得非常简单,但正确设置它可能会有点痛苦。您最好的选择是使用第三方库来管理复杂性,这样您就不必设置一千个 curl 选项或处理流接口处理不是 200 的 HTTP 代码的糟糕程度。

PEAR 的 HTTP_Request2是一个很好的起点。它在 BSD 许可下可用,这意味着您可以将它与您自己的专有代码捆绑在一起,而不会出现许可问题。这是一个非常基本的示例,应该适合您。首先,让我们收集有关实际请求的信息。

$endpoint_url = 'https://www.plimus.com/jsp/validateKey.jsp';
$params = array(
    'action' => 'REGISTER',
    'productId' = '582710',
    'key' => 'XXX-XXXX-XXXX-XXXX'
);

如果你有一个uniqueMachineId,你也可以将它添加到数组中。

现在我们将构建请求对象。

$request = new HTTP_Request2($endpoint_url);
$request->setMethod(HTTP_Request2::GET);
$request->getUrl()->setQueryVariables($params);

如果您需要构建 POST 而不是 GET,请参阅文档中的“请求正文”部分。所以,我们已经设置了请求,让我们实际执行它。

$response = $request->send();
$http_code = $request->getStatus();
$body_of_document = $response->getBody();

多田。根据生成的 HTTP 响应代码或文档正文执行您需要执行的任何操作。

您也可以对其他请求重复此过程,只需根据需要更改$params数组$endpoint_url即可。

您可能还应该阅读有关适配器选项的手册部分。默认配置很可能适合您,但您可能需要请求 curl 适配器而不是套接字适配器。

正如我所提到的,这不是唯一的选择。我是Zend_Http_Client的粉丝,也可以在 BSD 许可下使用。如果你感到受虐,你也可以直接使用 curl 扩展,如果你完全是蝙蝠鸟疯子,你可以使用我在世界上最喜欢的东西,

但说真的,HTTP_Request2 应该为您完成这项工作。

于 2011-03-12T04:05:01.910 回答