Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: возвращает 1. И как быть?
Форумы портала PHP.SU » » XML и его обработка » возвращает 1. И как быть?

Страниц (2): [1] 2 »
 

1. Proffessional - 17 Мая, 2011 - 16:47:20 - перейти к сообщению
Ребята, помогите!
Я использую [URL="http://scripts.incutio.com/xmlrpc/"]IXR Library[/URL]. Написал простой код,
PHP:
скопировать код в буфер обмена
  1. $Client = new IXR_Client('http://www.site.com/interface/xmlrpc');
  2. echo '<pre>';
  3. $Challenge = $Client->query('LJ.XMLRPC.getchallenge');
  4. print_r($Challenge);

Принтит он 1. И всё. Так отвечает используемый в фреймворке cURL если не установить параметр CUROPT_RETURNTRASFER в 1. НО в фреймворке именно так и сделано. Самое странное, что я им уже пользовался без таких проблем. ДОЛЖЕН ВЫВОДИТСЯ ответ сервера! Как с этим разобраться? помогите!:wall:
2. EuGen - 17 Мая, 2011 - 16:50:20 - перейти к сообщению
http://phpfaq[dot]ru/debug
попробуйте
3. Proffessional - 17 Мая, 2011 - 16:57:42 - перейти к сообщению
EuGen пишет:
http://phpfaq[dot]ru/debug
попробуйте

Тот самый легендарный EuGen?! Вот это да!

Я прочитал. это я уже делал. Даже выставлял

что включает CUTOPT_VERBOSE. Вызовы отправляются и принимаются, но переменная не принимает значение, полученное от сервера. Ничего не могу понять!...
4. EuGen - 17 Мая, 2011 - 16:59:53 - перейти к сообщению
Не очень понятен сарказм. Я ведь наперед не могу точно знать, что именно Вы делали.
Посмотрите, что же от сервера приходит. И если не приходит, то исследуйте проблему там.
Так как конкретного Вы ничего не предоставили, то и ответ может быть только в общих чертах.
5. Proffessional - 17 Мая, 2011 - 17:03:18 - перейти к сообщению
EuGen, это не сарказм! Я на вашем учебнике программировать учился (и учусь Улыбка

Ну, вот код, как есть:
PHP:
скопировать код в буфер обмена
  1. include('IXR_Library.php');
  2. //get challenge from LJ and create auth_response
  3. $Lj = new IXR_Client('http://www.livejournal.com/interface/xmlrpc');
  4. echo '<pre>';
  5. $LjChallenge = $Lj->query('LJ.XMLRPC.getchallenge');
  6. print_r($LjChallenge);

- постилка в жж.
Ответы сервера такие, как и должны быть, вот дебаг информация:
CODE (htmlphp):
скопировать код в буфер обмена
  1. POST /interface/xmlrpc HTTP/1.0
  2. Host: www.livejournal.com
  3. Content-Type: text/xml
  4. User-Agent: The Incutio XML-RPC PHP Library
  5. Content-Length: 114
  6.  
  7. <?xml version="1.0"?>
  8. <methodCall>
  9. <methodName>LJ.XMLRPC.getchallenge</methodName>
  10. <params>
  11. </params></methodCall>
  12.  
  13.  
  14.  
  15. HTTP/1.1 200 OK
  16. Server: GoatProxy 1.0
  17. Date: Tue, 17 May 2011 12:30:06 GMT
  18. Content-Type: text/xml
  19. Connection: close
  20. X-AWS-Id: cws10
  21. SOAPServer: SOAP::Lite/Perl/0.710.08
  22. Content-Length: 510
  23. X-Varnish: 474379162
  24. Age: 0
  25. X-VWS-Id: bil1-varn15
  26. X-Gateway: bil1-swlb04
  27.  
  28. <?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><struct><member><name>auth_scheme</name><value><string>c0</string></value></member><member><name>server_time</name><value><int>1305635406</int></value></member><member><name>challenge</name><value><string>c0:1305633600:1806:60:VGZASSeBOf4SM97ex46Z:7d097110695e570b4b3e8219a3fa266f</string></value></member><member><name>expire_time</name><value><int>1305635466</int></value></member></struct></value></param></params></methodResponse>
  29.  
6. EuGen - 17 Мая, 2011 - 17:09:28 - перейти к сообщению
А Вы уверены, что используете библиотеку правильно, в соответствии с ее API?
Вот к примеру бегло посмотрел, так есть: http://scripts[dot]incutio[dot]com/xmlrp[dot][dot][dot]construction.php
Где есть даже пример:
Цитата:
// Create the client object
$client = new IXR_Client('http://scripts.incutio.com/xmlrpc/foldoc/server.php');

// Run a query for PHP
if (!$client->query('foldoc.getEntry', 'php')) {
die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
}

// Display the result
echo '<pre>';
print_r($client->getResponse());
echo '</pre>';

А у Вас не вызываются сответствующие методы. Детально не читал, но подозреваю, что вдумчивое прочтение их документации Вам поможет.
7. Proffessional - 17 Мая, 2011 - 17:14:02 - перейти к сообщению
Я уже выучил почти всё что там написано! Только несколько скудно...
Едиственное что я не стал делать это в if смотреть на то работает или нет, я на debug это смотрю.
Принять-то XML ответ можно только в переменную! И как я видел это так и делается.
8. EuGen - 17 Мая, 2011 - 17:16:24 - перейти к сообщению
Так у Вас же проблема в том, что не приходит ответ, верно? Если нет, то что мешает вызвать getresponse и потом делать с полученной переменной что хочется (распечатать, показать на экране, записать в БД и т.п.)
9. Proffessional - 17 Мая, 2011 - 17:21:35 - перейти к сообщению
EuGen пишет:
Так у Вас же проблема в том, что не приходит ответ, верно? Если нет, то что мешает вызвать getresponse и потом делать с полученной переменной что хочется (распечатать, показать на экране, записать в БД и т.п.)

Штука как раз в том, что ответ приходит, но переменной присваивается не то, что отвечает сервер, а 1 - мол, запрос удачно отправлен. то же само происходит с cURL если не задат параметр RETURTRANSFER равный 1.
10. EuGen - 17 Мая, 2011 - 17:25:18 - перейти к сообщению
Тогда, похоже, дело в том, что возвращает сам сервер. То есть он просто другое не умеет отправлять.
Может, тогда дело в том, что Вы некорректно обращаетесь к серверу?
11. Proffessional - 17 Мая, 2011 - 17:42:16 - перейти к сообщению
EuGen пишет:
Тогда, похоже, дело в том, что возвращает сам сервер. То есть он просто другое не умеет отправлять.
Может, тогда дело в том, что Вы некорректно обращаетесь к серверу?

Там всё в точности по документации.
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><struct><member><name>auth_scheme</name><value><string>c0</string></value></member><member><name>server_time</name><value><int>1305635406</int></value></member><member><name>challenge</name><value><string>c0:1305633600:1806:60:VGZASSeBOf4SM97ex46Z:7d097110695e570b4b3e8219a3fa266f</string></value></member><member><name>expire_time</name><value><int>1305635466</int></value></member></struct></value></param></params></methodResponse>

Просто это НЕ СОХРАНИТЬ В ПЕРЕМЕННОЙ, проблема только в этом.
12. EuGen - 17 Мая, 2011 - 17:48:32 - перейти к сообщению
Да с чего не сохранить-то.
Например для curl
PHP:
скопировать код в буфер обмена
  1.  
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL, $url);
  4. curl_setopt($ch, CURLOPT_HEADER, 0);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. $result = curl_exec($ch);
  7.  

-это если Вы опечатались, когда указывали директиву:
Proffessional пишет:
если не установить параметр CUROPT_RETURNTRASFER в 1

Далее, всегда есть функции ob_
http://php.su/functions/?ob_start
и
http://php.su/functions/?ob_get_contents
а так же остальное
http://php.su/functions/?ob_
13. Proffessional - 17 Мая, 2011 - 17:52:23 - перейти к сообщению
Спасибо, попробую. Только странно тогда что-то получается с этим фреймворком...
(Добавление)
EuGen, извините что так Вас мучаю (я Ваш поклонник Закатив глазки ), но ничего не помогает. Сделал так
PHP:
скопировать код в буфер обмена
  1. $Lj = new IXR_Client('http://www.livejournal.com/interface/xmlrpc');
  2. echo '<pre>';
  3. $Lj->query('LJ.XMLRPC.getchallenge');
  4. $LjChallenge = ob_end_flush();
  5. print_r($LjChallenge);

выводит туже единицу.
Ведь должно быть как в курле $variable = наш запрос(). И так делают. http://www[dot]likhachev[dot]net/2008/03[dot][dot][dot]pc-crossposting/
Замучился... Огорчение
14. EuGen - 18 Мая, 2011 - 09:13:01 - перейти к сообщению
А если напрямую через xml rpc?
Скажем, как здесь (см. пример):
http://ru.php.net/manual/en/func...code-request.php
15. Proffessional - 18 Мая, 2011 - 10:05:38 - перейти к сообщению
Активировал расширение, перезапустился (у меня Denwer со всеми модулями) но на строке
$request = xmlrpc_encode_request('LJ.XMLRPC.getchalenge');
он говорит Call to undefined function. Не работает.
А может есть простой cURL-based фреймворк для xml-rpc? Можно и самому написать, это не так сложно, но не удобно получается. Ниндзя

 

Powered by ExBB FM 1.0 RC1