Редактирование области URL API

0

Привет всем, мне нужно немного помочь в редактировании области API на основе URL-адресов сайтов, поэтому, если у меня есть foo.com/?Wab_id=15, он изменит область API для

?scope=accepted&view=films&wab_id=15

Я думал, что могу что-то вроде

$ApiData = file_get_contents('http://foo.com/api/?scope=accepted&view=films/&wab_id=$id');

а затем с помощью Get получить идентификатор, который передается в URL для редактирования URL-адреса API. я также пробовал цикл, хотя весь json, а затем вызвал ключ внутри массива, но также не получил большого успеха, мой код ниже

    $ApiData = file_get_contents('http://foo.com/api/?scope=accepted&view=films');
$obj = json_decode($ApiData, true);
$data = $obj;
//here you load $data with whatever you want.
$id = $_GET['id'];
foreach ($data[$id] as $key=>$value){
echo "$key -> $value<br>";
}
?>

но это возвращает ошибку

Invalid argument supplied for foreach()

ive также попытался выполнить цикл через массив Muti с помощью foreach внутри foreach и отобразил значения, которые код и результаты ниже

$obj = json_decode($ApiData, true);
$data = $obj;
//here you load $data with whatever you want.

foreach ( $data as $film ){
  foreach ( $film as $key=>$val ){
    echo "$key -> $val<br>";
  }
}

Результаты

uid -> 95
wab_id -> 95
title -> La Batalla de los Invisibles
title_en -> Battle of the Invisibles
syn_sm ->
syn_med -> 
syn_lg -> 
form -> 
genre -> 
language -> 
subtitle_lang -> 
year -> 
runtime -> 
place_sub_city -> 
place_sub_state -> 
place_sub_country -> 
place_film_country -> Mexico
place_dir_city -> 
place_dir_state -> 
place_dir_country -> 
accepted -> 1
festival_year -> 2014
trailer -> 
links ->
  • 0
    Я понятия не имею, что вы спрашиваете, но наверняка зацикливание int не очень хорошая идея. Более того, лучше использовать CURL вместо file_get_contents () для получения содержимого сайта
  • 0
    Это потому, что у вас не будет установлен $ data [95] `.
Показать ещё 1 комментарий
Теги:
foreach
url

1 ответ

0
Лучший ответ

Как я упоминал в своем комментарии:

Вы передаете wab_id, Wab_id или id на ваш сервер, где вы будете получать доступ с помощью $ _GET? Потому что неясно, под каким ключом вы передаете его самому себе, и если вы используете правильный, что может быть проблемой, с которой вы сейчас сталкиваетесь.

После того, как вы отделитесь от работы с параметрами API, это должно быть простым делом:

$api = "http://foo.com/api/";
$params = array(
   'scope' => 'accepted',
   'view' => 'films',
);

// you need to match the key you are using here to what you are passing
// to your URL
if (isset($_GET['id'])) {
  $params['wab_id'] = $_GET['id'];
}

$url = $api . '?' . http_build_query($params);

Теперь для последней части вам действительно нужно использовать cURL, Http... или действительно любую вещь, file_get_contents от file_get_contents потому что она действительно не дает вам очень хороший способ справиться с ошибками, которые могут возникнуть. Я приведу вам быстрый пример с использованием cURL:

$client = curl_init();
curl_setopt_array($client, array(
   CURLOPT_RETURNTRASNFER => true,
   CURLOPT_URL => $url // the one we dynmically built above
));

$responseText = curl_exec($client);

if ($responseText !== false) {
   $responseInfo = curl_getinfo($client);

   if ($responseInfo['http_code'] === 200) {
       // http status ok - you may need to take action based 
       // on other http status codes but im not going to delve into that here.

       $data = json_decode($responseText, true);
       print_r($data);

    } else {
      printf('Error accessing data: HTTP Status %s', $responseInfo['http_code'];
    }
} else {
  printf('Error: (%s) %s', curl_errno($client), curl_error($client));
}

curl_close($client);
  • 0
    Я прохожу Wab_id
  • 0
    client = curl_init(); curl_setopt_array($client, array( CURLOPT_RETURNTRASNFER => true, CURLOPT_URL => $url )); возвращает ошибку curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values in /home/jewellsc/public_html/handler.php on line 20 Error: (3) No URL set! и это, вероятно, легко исправить, но я никогда не работал с curl, если это не было для laravel

Ещё вопросы

Сообщество Overcoder
Наверх
Меню