0
我的请求需要令牌来发出API请求。下面是他们提供的例如卷曲代码:如何使用PHP cURL进行API请求?
curl -v -L https://api.artsy.net/api/artists/andy-warhol -H 'X-Xapp-Token:myToken'
我的代码:
$postdata = array();
$postdata['client_id'] = 'myId';
$postdata['client_secret'] = 'myClient';
$postdata['xapp_token'] = 'myToken';
$cc = curl_init();
curl_setopt($cc,CURLOPT_POST,1);
curl_setopt($cc,CURLOPT_RETURNTRANSFER,1);
curl_setopt($cc,CURLOPT_URL,"https://api.artsy.net/api/artists/andy-warhol");
curl_setopt($cc,CURLOPT_POSTFIELDS,$postdata);
$result = curl_exec($cc);
echo $result;
这将导致一个JSON对象,看起来像:
{
"id": "4d8b92b34eb68a1b2c0003f4",
"slug": "andy-warhol",
"created_at": "2010-08-23T14:15:30+00:00",
"updated_at": "2017-08-25T17:25:51+00:00",
"name": "Andy Warhol",
"sortable_name": "Warhol Andy",
"gender": "male",
"birthday": "1928",
"hometown": "Pittsburgh, Pennsylvania",
"location": "New York, New York",
"nationality": "American",
//...
但是它会导致这个结果:
{:type=>"other_error", :message=>"405 Not Allowed", "X-Frame-Options"=>"DENY", "X-Robots-Tag"=>"noindex", "Allow"=>"OPTIONS, GET, HEAD"}
我对cURL不太熟悉,所以我试图翻译他们提供的示例代码。任何帮助将深表感谢!
是的,它可能期待'GET'调用,并将值作为查询字符串。 – ceejayoz
@ceejayoz啊!谢谢你指出!我用curl_setopt($ cc,CURLOPT_CUSTOMREQUEST,'GET')替换了'curl_setopt($ cc,CURLOPT_POST,1);'现在它返回: '{“_links”:{“location”:{“href” : “https://api.artsy.net/api/artists/4d8b92b34eb68a1b2c0003f4”}}}'。 不幸的是,我的新问题是,我试图访问“href”目标,但不断收到错误:'可恢复的致命错误:类stdClass的对象无法转换为字符串' '$ result = curl_exec ($ CC); $ myJson = json_decode($ result); echo $ myJson - > _ links;' 对此有何帮助?谢谢! – Sam
@Sam这个新错误与您在此处询问的原始问题并不真正相关,所以最好提出一个关于它的新问题。但是,我会提醒你,它可能会被作为[如何从PHP中提取JSON数据?]的副本来关闭(https://stackoverflow.com/questions/29308898/how-do-i-extract-data -from-json-with-php),所以我建议先看看。 –