API 卷曲响应出现问题 (php)
Trouble With API Curl Response(php)
我对 Companies House API 的回复有疑问。我正在从 php 页面发出以下 curl 请求:
$request_url_1 ='https://api.companieshouse.gov.uk/company/' ;
$company_number = 11495745;
$request_url_2 = '/officers';
$request_url = $request_url_1 . $company_number . $request_url_2;
$ch = curl_init($request_url);
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$chkey:")
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($ch);
curl_close( $ch );
$contents = json_decode($content,true);
以下是发送 curl 请求后 php 页面上 'pasted' 的响应,我似乎无法获取 $contents 变量的 contents/value应包含卷曲响应。
{
"active_count":1,
"items_per_page":35,
"kind":"officer-list",
"etag":"6cc48213158205c9fa85492a4c2ef0a98b56b2f1",
"resigned_count":2,
"items":[
{
"date_of_birth":{
"year":1963,
"month":2
},
"appointed_on":"2019-08-01",
"nationality":"British",
"address":{
"address_line_1":"Moorside Crescent",
"country":"United Kingdom",
"address_line_2":"Sinfin",
"postal_code":"DE24 9PH",
"locality":"Derby",
"premises":"75"
},
"occupation":"Company Director",
"links":{
"officer":{
"appointments":"/officers/IryiaaBZodlGNaOP0Rf3Pb2GnO8/appointments"
}
},
"name":"MILLER, Eira",
"country_of_residence":"England",
"officer_role":"director"
},
{
"date_of_birth":{
"month":3,
"year":1987
},
"nationality":"English",
"occupation":"Company Director",
"address":{
"locality":"Derby",
"address_line_1":"Moorside Crescent",
"premises":"75",
"country":"United Kingdom",
"postal_code":"DE24 9PH",
"address_line_2":"Sinfin"
},
"appointed_on":"2018-12-10",
"resigned_on":"2019-07-31",
"name":"KING, Kimberley Rachel",
"links":{
"officer":{
"appointments":"/officers/av7G3-iF_9-FXhRH2xm-IxejeGQ/appointments"
}
},
"country_of_residence":"United Kingdom",
"officer_role":"director"
},
{
"address":{
"postal_code":"DE24 9PH",
"locality":"Derby",
"country":"United Kingdom",
"premises":"75",
"address_line_2":"Sinfin",
"address_line_1":"Moorside Crescent"
},
"occupation":"Managing Director",
"nationality":"British",
"appointed_on":"2018-08-01",
"resigned_on":"2018-12-10",
"officer_role":"director",
"country_of_residence":"United Kingdom",
"links":{
"officer":{
"appointments":"/officers/X9nlVD6qIIENMjaH946__4CB3QE/appointments"
}
},
"name":"MARTIN, Katey",
"date_of_birth":{
"month":6,
"year":1968
}
}
],
"links":{
"self":"/company/11495745/officers"
},
"inactive_count":0,
"start_index":0,
"total_results":3
}
我试过将结果作为非关联数组返回并通过普通数组访问它,但也没有任何乐趣。
FluffyKitten 提供了以下代码来执行名称字段的提取:
$item = $contents["items"];
foreach($item as $items){
echo $items["name"];
}
但是,这无法访问所需的数据。 $contents 的 print_r 结果为 '1' 和 var_dump (1)
您的代码有几个问题:
- 您混淆了访问数组和对象的代码
- 不需要循环的时候你在循环
您正在使用 json_decode($content,true)
,并通过传入 true
参数,将结果转换为关联数组,但随后您尝试访问 items
作为 属性 个对象。
因为您已经将内容转换为关联数组,所以您可以使用正确的键轻松访问您想要的信息,例如:
$item = $contents["items"];
foreach($item as $items){
echo "<p>".$items["name"];
}
参考PHP json_decode
Documentation
更新:
你的问题已经完全改变了 - 它是关于如何用结果循环遍历变量,但现在看来问题是首先将结果保存为变量。
您需要将 CURLOPT_RETURNTRANSFER
option 设置为 true
以便不直接输出结果(我假设这就是您将结果“粘贴”到 [=49= 中的意思] 页)。
将此添加到您的 CURL 代码中,并且 如果您的其余代码正确,结果应保存在 $content
变量中以便您可以使用它使用上面的代码循环:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
我对 Companies House API 的回复有疑问。我正在从 php 页面发出以下 curl 请求:
$request_url_1 ='https://api.companieshouse.gov.uk/company/' ;
$company_number = 11495745;
$request_url_2 = '/officers';
$request_url = $request_url_1 . $company_number . $request_url_2;
$ch = curl_init($request_url);
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$chkey:")
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($ch);
curl_close( $ch );
$contents = json_decode($content,true);
以下是发送 curl 请求后 php 页面上 'pasted' 的响应,我似乎无法获取 $contents 变量的 contents/value应包含卷曲响应。
{
"active_count":1,
"items_per_page":35,
"kind":"officer-list",
"etag":"6cc48213158205c9fa85492a4c2ef0a98b56b2f1",
"resigned_count":2,
"items":[
{
"date_of_birth":{
"year":1963,
"month":2
},
"appointed_on":"2019-08-01",
"nationality":"British",
"address":{
"address_line_1":"Moorside Crescent",
"country":"United Kingdom",
"address_line_2":"Sinfin",
"postal_code":"DE24 9PH",
"locality":"Derby",
"premises":"75"
},
"occupation":"Company Director",
"links":{
"officer":{
"appointments":"/officers/IryiaaBZodlGNaOP0Rf3Pb2GnO8/appointments"
}
},
"name":"MILLER, Eira",
"country_of_residence":"England",
"officer_role":"director"
},
{
"date_of_birth":{
"month":3,
"year":1987
},
"nationality":"English",
"occupation":"Company Director",
"address":{
"locality":"Derby",
"address_line_1":"Moorside Crescent",
"premises":"75",
"country":"United Kingdom",
"postal_code":"DE24 9PH",
"address_line_2":"Sinfin"
},
"appointed_on":"2018-12-10",
"resigned_on":"2019-07-31",
"name":"KING, Kimberley Rachel",
"links":{
"officer":{
"appointments":"/officers/av7G3-iF_9-FXhRH2xm-IxejeGQ/appointments"
}
},
"country_of_residence":"United Kingdom",
"officer_role":"director"
},
{
"address":{
"postal_code":"DE24 9PH",
"locality":"Derby",
"country":"United Kingdom",
"premises":"75",
"address_line_2":"Sinfin",
"address_line_1":"Moorside Crescent"
},
"occupation":"Managing Director",
"nationality":"British",
"appointed_on":"2018-08-01",
"resigned_on":"2018-12-10",
"officer_role":"director",
"country_of_residence":"United Kingdom",
"links":{
"officer":{
"appointments":"/officers/X9nlVD6qIIENMjaH946__4CB3QE/appointments"
}
},
"name":"MARTIN, Katey",
"date_of_birth":{
"month":6,
"year":1968
}
}
],
"links":{
"self":"/company/11495745/officers"
},
"inactive_count":0,
"start_index":0,
"total_results":3
}
我试过将结果作为非关联数组返回并通过普通数组访问它,但也没有任何乐趣。
FluffyKitten 提供了以下代码来执行名称字段的提取:
$item = $contents["items"];
foreach($item as $items){
echo $items["name"];
}
但是,这无法访问所需的数据。 $contents 的 print_r 结果为 '1' 和 var_dump (1)
您的代码有几个问题:
- 您混淆了访问数组和对象的代码
- 不需要循环的时候你在循环
您正在使用 json_decode($content,true)
,并通过传入 true
参数,将结果转换为关联数组,但随后您尝试访问 items
作为 属性 个对象。
因为您已经将内容转换为关联数组,所以您可以使用正确的键轻松访问您想要的信息,例如:
$item = $contents["items"];
foreach($item as $items){
echo "<p>".$items["name"];
}
参考PHP json_decode
Documentation
更新:
你的问题已经完全改变了 - 它是关于如何用结果循环遍历变量,但现在看来问题是首先将结果保存为变量。
您需要将 CURLOPT_RETURNTRANSFER
option 设置为 true
以便不直接输出结果(我假设这就是您将结果“粘贴”到 [=49= 中的意思] 页)。
将此添加到您的 CURL 代码中,并且 如果您的其余代码正确,结果应保存在 $content
变量中以便您可以使用它使用上面的代码循环:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);