0

我正在尝试使用要求我同时使用 POST 和 GET 的cloudsight API ( http://cloudsight.readme.io/v1.0/docs )。我以前从未使用过 REST API,但在做了一些研究后发现使用 PHP 发布是可行的。
我在 api 文档中找到了以下代码,但不确定如何将此命令行 curl 转换为 PHP。响应采用 JSON 格式。

curl -i -X POST \
-H "Authorization: CloudSight [key]" \
-F "image_request[image]=@Image.jpg" \
-F "image_request[locale]=en-US" \
https://api.cloudsightapi.com/image_requests


curl -i \
-H "Authorization: CloudSight [key]" \
https://api.cloudsightapi.com/image_responses/[token]
4

2 回答 2

1

如果您仍然对答案感兴趣:

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://api.cloudsightapi.com/image_requests" );

$postFields = array(
    'image_request' => array(
        'remote_image_url'  => $url,
        'locale' => 'en-US'
    )
);

$fields_string = http_build_query($postFields);

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $fields_string );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Authorization: CloudSight [key]', "Content-Type:multipart/form-data" ) );

curl_exec( $ch );
curl_close( $ch );
于 2016-11-14T17:27:15.630 回答
0

如果使用 php curl 库,您可以为 POST 执行此操作:

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://api.cloudsightapi.com/image_requests" );

$postFields = array(
    'image_request' => array(
        'image'  => '@/path/to/image.jpeg',
        'locale' => 'en-US'
    )
);

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $postFields );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Authorization: CloudSight [key]' ) );

curl_exec( $ch );
curl_close( $ch );

PHP>=5.5 还提供了一个 CURLFile 类 ( http://php.net/manual/en/class.curlfile.php ) 用于处理文件而不是传递路径,如上例所示。

对于 GET,您只需删除这两行并更改 url:

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $postFields );

如果您在项目中使用 Composer(http://guzzle.readthedocs.org/en/latest/),另一种选择是使用 Guzzle。

于 2015-07-21T03:55:07.847 回答