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 :: Версия для печати :: парсинг simplexml_load_string
Форумы портала PHP.SU » » Вопросы новичков » парсинг simplexml_load_string

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

1. mega94 - 04 Февраля, 2015 - 09:08:48 - перейти к сообщению
Помогите разобраться хочу парсит такой запрос:
PHP:
скопировать код в буфер обмена
  1. $url = 'http://otapi.net/OtapiWebService2.asmx/BatchSearchItemsFrame?instanceKey='.CFG_SERVICE_INSTANCEKEY.'&language=ru&xmlParameters=<SearchItemsParameters><CategoryId>'.$id_cats.'</CategoryId><Configurators><Configurator Pid='20000' Vid='7704137'/></Configurators><OrderBy>'.$sorting.'</OrderBy></SearchItemsParameters>&sessionId=&framePosition='.$startget.'&frameSize=10&blockList=SearchProperties';


PHP:
скопировать код в буфер обмена
  1. function parse($url){
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, $url);
  4. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($curl, CURLOPT_HEADER, 0);
  6.  
  7. $result = curl_exec($curl);
  8. print_r($result);
  9. if ($result === FALSE) {
  10.     echo "cURL Error: " . curl_error($curl); die();
  11. }
  12. $xmlObject = simplexml_load_string($result);
  13.  
  14. curl_close($curl);
  15.  
  16. if ((string)$xmlObject->ErrorCode !== 'Ok') {
  17.     echo "Error: " . $xmlObject->ErrorDescription; die();
  18. }
  19. return $xmlObject;
  20.  }


ошибка с строке
CODE (html):
скопировать код в буфер обмена
  1. <Configurator Pid='20000' Vid='7704137'/>
(HTTP Error 400. The request is badly formed.)
а как сформулировать тогда? надо именно так:
CODE (html):
скопировать код в буфер обмена
  1. <Configurator Pid='20000' Vid='7704137'/>
2. skiphog - 04 Февраля, 2015 - 09:42:57 - перейти к сообщению
Осмелюсь предположить, что у вас ошибка в составлении строки.
Т.к. вы строку формируете в одинарных кавычках,то как раз эта часть получается с ошибкой.
Попробуйте изменить
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!-- это -->
  3. <Configurator Pid='20000' Vid='7704137'/>
  4.  
  5. <!-- на это -->
  6. <Configurator Pid="20000" Vid="7704137" />
3. mega94 - 04 Февраля, 2015 - 10:00:06 - перейти к сообщению
skiphog пишет:
Осмелюсь предположить, что у вас ошибка в составлении строки.
Т.к. вы строку формируете в одинарных кавычках,то как раз эта часть получается с ошибкой.
Попробуйте изменить
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!-- это -->
  3. <Configurator Pid='20000' Vid='7704137'/>
  4.  
  5. <!-- на это -->
  6. <Configurator Pid="20000" Vid="7704137" />

Так тоже пробовал тоже самое, ошибка в пробеле
PHP:
скопировать код в буфер обмена
  1. <ConfiguratorPid="20000"Vid="7704137" />

такой код функция simplexml_load_string пропускает, но api сервис ответит (Недопустимый параметр xmlУлыбка
4. Sail - 04 Февраля, 2015 - 10:14:42 - перейти к сообщению
mega94, тогда вполне логично будет или всю строку $url обрамить двойными кавычками, или экранировать апострофы Улыбка
PHP:
скопировать код в буфер обмена
  1. $url = ".....<Configurator Pid='20000' Vid='7704137'/>......";
  2. /* или */
  3. $url = '.......<Configurator Pid=\'20000\' Vid=\'7704137\'/>.......';

Подробности о строках в PHP
5. skiphog - 04 Февраля, 2015 - 10:32:31 - перейти к сообщению
Вот так должно работать
PHP:
скопировать код в буфер обмена
  1. $string = '<SearchItemsParameters><CategoryId>'.$id_cats.'</CategoryId><Configurators><Configurator Pid="20000" Vid="7704137"/></Configurators><OrderBy>'.$sorting.'</OrderBy></SearchItemsParameters>';
  2. $url = 'http://otapi.net/OtapiWebService2.asmx/BatchSearchItemsFrame?instanceKey='.CFG_SERVICE_INSTANCEKEY.'&language=ru&xmlParameters='.rawurlencode($string).'&sessionId=&framePosition='.$startget.'&frameSize=10&blockList=SearchProperties';
6. mega94 - 04 Февраля, 2015 - 15:26:21 - перейти к сообщению
skiphog пишет:
Вот так должно работать
PHP:
скопировать код в буфер обмена
  1. $string = '<SearchItemsParameters><CategoryId>'.$id_cats.'</CategoryId><Configurators><Configurator Pid="20000" Vid="7704137"/></Configurators><OrderBy>'.$sorting.'</OrderBy></SearchItemsParameters>';
  2. $url = 'http://otapi.net/OtapiWebService2.asmx/BatchSearchItemsFrame?instanceKey='.CFG_SERVICE_INSTANCEKEY.'&language=ru&xmlParameters='.rawurlencode($string).'&sessionId=&framePosition='.$startget.'&frameSize=10&blockList=SearchProperties';
ура!!! спасибо заработало, а я даже не знал о функции
PHP:
скопировать код в буфер обмена
вот за что я люблю этот форум тут всегда помогут =)

 

Powered by ExBB FM 1.0 RC1