2012-01-12 5 views
1

Я теперь работаю с API Name.com, у них есть документальное объяснение того, как получить подробную информацию.Работа с API Name.com (PHP)

Я сделал все правильно, но я не могу напечатать результат.

Я сделал var_dump() для отладки и вот результат:

object(stdClass)#4 (2) { 
    ["result"]=> object(stdClass)#5 (2) { 
     ["code"]=> int(100) ["message"]=> string(18) "Command Successful" 
    } 
    ["domains"]=> object(stdClass)#6 (8) { 
     ["mynewdomain.mobi"]=> object(stdClass)#7 (5) { 
      ["avail"]=> bool(true) 
      ["tld"]=> string(4) "mobi" 
      ["price"]=> string(4) "8.99" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(false) 
     } 
     ["mynewdomain.net"]=> object(stdClass)#8 (5) { 
      ["avail"]=> bool(false) 
      ["tld"]=> string(3) "net" 
      ["price"]=> string(5) "49.95" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(true) 
     } 
     ["mynewdomain.org"]=> object(stdClass)#9 (5) { 
      ["avail"]=> bool(true) 
      ["tld"]=> string(3) "org" 
      ["price"]=> string(4) "9.99" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(false) 
     } 
     ["mynewdomain.info"]=> object(stdClass)#10 (5) { 
      ["avail"]=> bool(true) 
      ["tld"]=> string(4) "info" 
      ["price"]=> string(4) "3.99" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(false) 
     } 
     ["mynewdomain.com"]=> object(stdClass)#11 (5) { 
      ["avail"]=> bool(false) 
      ["tld"]=> string(3) "com" 
      ["price"]=> string(5) "49.95" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(true) 
     } 
     ["mynewdomain.biz"]=> object(stdClass)#12 (5) { 
      ["avail"]=> bool(false) 
      ["tld"]=> string(3) "biz" 
      ["price"]=> string(5) "29.95" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(true) 
     } 
     ["mynewdomain.me"]=> object(stdClass)#13 (5) { 
      ["avail"]=> bool(false) 
      ["tld"]=> string(2) "me" 
      ["price"]=> string(5) "49.95" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(true) 
     } 
     ["mynewdomain.tv"]=> object(stdClass)#14 (5) { 
      ["avail"]=> bool(false) 
      ["tld"]=> string(2) "tv" 
      ["price"]=> string(5) "49.95" 
      ["premium"]=> bool(false) 
      ["backorder"]=> bool(true) 
     } 
    } 
} 

и это еще один короткий результат для листинга доменов:

object(stdClass)#4 (2) { 
    ["result"]=> object(stdClass)#5 (2) { 
     ["code"]=> int(100) 
     ["message"]=> string(18) "Command Successful" 
    } 
    ["domains"]=> array(0) { } 
} 

Я попробовал следующее:

  • echo $response

  • echo $response->domains

  • echo $response['domains']

Но на самом деле, я не могу заставить его work..Could кто-нибудь помочь мне с этим?

Спасибо заранее,

ответ

1

Похоже, вы получаете кучу объектов назад, так что вам нужно итерации через домены $ response->. Я бы подтолкнуть, что к новому вара для облегчения обработки, как:

$domains = &$response->domains; 

foreach($domains as $key => $value) { 
    echo $key.":\n"; 
    foreach($value as $a => $b) { 
    if($b === true) $b = 'yes'; 
    if($b === false) $b = 'no'; 
    echo $a.": ".$b."\n"; 
    } 
} 

Примечания: $ response-> результат содержит только результат команды, отправленной на сервере. Убедитесь, что вы не ошиблись, но не ожидайте, что ваши данные будут там.

+0

Я пробовал это и получаю белую страницу, отлаживая, я получаю: array (0) {} –

+0

Можете ли вы сделать сериализацию ($ response); - эхо и отправьте его, чтобы я мог привести класс в тестовую страницу и посмотреть, что происходит? – ddubs

+0

Результат был получен, но все домены доступны: 'example.orgstdClass Object ([avail] => [tld] => org [price] => 49.95 [premium] => [backorder] => 1) example.netstdClass Object ([avail] => [tld] => net [price] => 49.95 [premium] => [backorder] => 1) example.infostdClass Object ([avail] => [tld] => info [price] => 49.95 [premium] => [backorder] => 1) example.mobistdClass Object ([avail] => [tld] => mobi [price] => 49.95 [premium] => [backorder] => 1) ' –

0

Мне кажется, что все находится в result массиве первый. Попробуйте это:

echo $response["result"]["domains"]; 
+0

'domains' не является дочерним элементом' result' – jprofitt

+0

Не работает: Неустранимая ошибка: нельзя использовать объект типа stdClass как массив –

+0

Хммм, извините, я не заметил, когда вывод был на одной строке, когда Я ответил. – kirb

3

Попробуйте это, чтобы получить сообщение:

echo $response->result->message; 

Чтобы получить список доменов:

foreach ($response->domains as $domainName => $domainData) 
{ 

    echo $domainName.": available-".$domainData->avail."; price - ".$domainData->price; 

} 
+0

Я получаю сообщение успешно, но список дает мне белую страницу. –

+0

@MohamedMagdy вы попробовали мой код ниже? $ domainData является объектом StdClass –

+0

Пробовал это снова с помощью check_domain, поскольку я пытался его использовать для list_domains, Message пришел успешно, но все домены доступны, это не проверка. –