0

我正在尝试对我的第一个 API 和文档中显示的示例请求构建一个 PHP 调用,告诉我用 curl 发出这个请求,但我没有取得太大的成功。我试图遵循其他答案(即CURL php 查询形式 - 如何?)并且知道我做错了什么但似乎无法弄清楚?

任何帮助将不胜感激。

初始请求必须经过 HTTP Basic 授权。

 POST /api/shrink HTTP/1.1
 Host: api.site.org
 Authorization: Basic YXsdflasdkfjalsdjfojiosslkjdZdXZ3eHl6MDEyMzQ1  

curl -i --user api:api_key --data-binary @test.png http://api.site.org

这应该返回一个包含图像文件 url 的 json 字符串。

4

3 回答 3

1

应该是这样的:

$url = "http://api.site.org/api/shrink";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); /* obey redirects */
curl_setopt($ch, CURLOPT_HEADER, 0);  /* No HTTP headers */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  /* return the data */
curl_setopt($process, CURLOPT_USERPWD, 'api:api_key');

$data = array(
    'uploaded_file' => '@/path/to/test.png'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

curl_close($ch);
于 2013-03-13T21:14:53.350 回答
1

我认为它会是这样的:

$c = curl_init('http://api.site.org');
curl_setopt_array($c, array(
    CURLOPT_USERPWD => 'api:api_key' // --user
    CURLOPT_POST    => 1,
    CURLOPT_POSTFIELDS => '@/full/path/to/test.png;type=image/png', // --data-binary, added mime type for good measure
    CURLOPT_HEADER => 1, // this is to the -i
    CURLOPT_RETURNTRANSFER => 1, // so you get the response back from curl_exec()
));
$response = curl_exec($c);

你有-i标志,但我不确定你是否想要响应头,以防你也添加CURLOPT_HEADER => 1到混合中。此外,如果您不想在 php 进程的输出中输出响应,请使用CURLOPT_RETURNTRANSFER => 1,您将从 curl init 中获取响应。

于 2013-03-13T21:15:50.673 回答
0

在我看来,您需要的所有信息都可以在这里找到

cURL 功能curl_setopt允许您设置最适合您的 curl 选项。

希望这可以帮助。=)

于 2013-03-13T21:16:33.037 回答