PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: почему ругается на валидный XML?
Поиск в теме | Версия для печати
Proffessional
Отправлено: 19 Мая, 2011 - 09:58:31
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Хочу отправить сообщение с помощью Atom Publishing Protocol. Создаю xml:
PHP:
скопировать код в буфер обмена
$atom = new DOMDocument( '1.0' , 'UTF-8' ) ;
$atom_entry = $atom -> createElement ( 'entry' ) ;
$atom_entry -> setAttribute ( 'xmlns' , 'http://www.w3.org/2005/Atom' ) ;
$atom -> appendChild ( $atom_entry ) ;
$atom_title = $atom -> createElement ( 'title' ) ;
$atom_title -> setAttribute ( 'type' , 'text' ) ;
$atom_entry -> appendChild ( $atom_title ) ;
$atom_title_content = $atom -> createTextNode ( $subject ) ;
$atom_title -> appendChild ( $atom_title_content ) ;
$atom_content = $atom -> createElement ( 'content' ) ;
$atom_content -> setAttribute ( 'type' , 'xhtml' ) ;
$atom_entry_content = $atom -> createTextNode ( $entry ) ;
$atom_content -> appendChild ( $atom_entry_content ) ;
$atom_entry -> appendChild ( $atom_content ) ;
$atomMessage = $atom -> saveXML ( ) ;
результат:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? xml version= "1.0" encoding= "UTF-8" ?>
< entry xmlns= "http://www.w3.org/2005/Atom" >< title type= "text" > Test</ title>< content type= "xhtml" > Test!</ content></ entry>
значит, всё правильно. Отправляю на Blogger.com. Вот что выдаётся -
CODE (
htmlphp ):
скопировать код в буфер обмена
Content- Type: text/ html; charset= UTF- 8
Date : Thu
, 19 May 2011 06
: 49
: 13 GMT
Expires: Thu, 19 May 2011 06: 49: 13 GMT
Cache- Control: private, max- age= 0
X- Content- Type- Options: nosniff
X- XSS- Protection: 1 ; mode= block
Server: GSE
Transfer- Encoding: chunked
Ребята, помогите понять, что не так? Почему мой xml, совершенно правильно созданный, оказывается незавершённым?
-----<?php ?> - идеальная программа на php
Proffessional
Отправлено: 19 Мая, 2011 - 11:08:13
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
В документации
http://code[dot]google[dot]com/intl/ru/a[dot][dot][dot]ingPublicEntries
пример как раз такой. Я и с тегом category пробовал, результат тот же
CODE (
htmlphp ):
скопировать код в буфер обмена
< entry xmlns= 'http://www.w3.org/2005/Atom' >
< title type= 'text' > Marriage!</ title>
< content type= 'xhtml' >
< div xmlns= "http://www.w3.org/1999/xhtml" >
< p> Mr. Darcy has < em> proposed marriage</ em> to me!</ p>
< p> He is the last man on earth I would ever desire to marry.</ p>
< p> Whatever shall I do?</ p>
</ div>
</ content>
< category scheme= "http://www.blogger.com/atom/ns#" term= "marriage" />
< category scheme= "http://www.blogger.com/atom/ns#" term= "Mr. Darcy" />
</ entry>
-----<?php ?> - идеальная программа на php
Proffessional
Отправлено: 19 Мая, 2011 - 11:36:51
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Мелкий пишет: А отправляете как?
'Content-type: application/atom+xml',
'Content-Length:'.$length,
'Authorization: GoogleLogin auth='.$Cookie,
в post запросе отправляю xml, то есть:
PHP:
скопировать код в буфер обмена
'Content-type: application/atom+xml' ,
'Content-Length:' . $length ,
'Authorization: GoogleLogin auth=' . $Cookie ,
) ;
curl_setopt ( $ch , CURLOPT_URL
, 'https://www.blogger.com/feeds/' . $blogID . '/posts/default' ) ;
-----<?php ?> - идеальная программа на php
Proffessional
Отправлено: 19 Мая, 2011 - 12:47:10
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Мелкий , извините, а как это сделать?
(Добавление)
PHP:
скопировать код в буфер обмена
$atom = new DOMDocument( '1.0' , 'UTF-8' ) ;
$atom_entry = $atom -> createElement ( 'entry' ) ;
$atom_entry -> setAttribute ( 'xmlns' , 'http://www.w3.org/2005/Atom' ) ;
$atom -> appendChild ( $atom_entry ) ;
$atom_title = $atom -> createElement ( 'title' ) ;
$atom_title -> setAttribute ( 'type' , 'text' ) ;
$atom_entry -> appendChild ( $atom_title ) ;
$atom_title_content = $atom -> createTextNode ( $subject ) ;
$atom_title -> appendChild ( $atom_title_content ) ;
$atom_content = $atom -> createElement ( 'content' ) ;
$atom_content -> setAttribute ( 'type' , 'xhtml' ) ;
$atom_entry_content = $atom -> createTextNode ( $entry ) ;
$atom_content -> appendChild ( $atom_entry_content ) ;
$atom_entry -> appendChild ( $atom_content ) ;
$atomMessage = $atom -> saveXML ( ) ;
echo $atomMessage ;
echo '<br>' ;
'Content-type: application/atom+xml' ,
'Content-Length:' . $length ,
'Authorization: GoogleLogin auth=' . $Cookie ,
) ;
//stert session!
curl_setopt ( $ch , CURLOPT_URL
, 'https://www.blogger.com/feeds/' . $blogID . '/posts/default' ) ; echo $sendResult ;
$Cookie - это auth-token гугла, с ним всё правильно
-----<?php ?> - идеальная программа на php
Proffessional
Отправлено: 19 Мая, 2011 - 18:13:01
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Мелкий , я сделал через httpAnalyzer, получил такой header:
CODE (
htmlphp ):
скопировать код в буфер обмена
POST / feeds/ 2415983713197246636/ posts/ default HTTP/ 1.1
Host: www. blogger. com
Accept: * /*
Content-type: application/atom+xml
Content-Length:0
Authorization: GoogleLogin auth=DQAAAJUAAADZ3dR9WzxwAw0R0QKjrzJkBJfy8_ErIwsaxuXeIr4yAFX7iVsZePeYb82jScLtoa8xOsPAJrmTZsrvNY5GYzBvUrbBTY9EjrBIRBamCmomOIS9aRi9W41DLBzDIYCb-om0e-6KlDRMcP_fh7FpSkBq3RJua_wDqohscjW-DVDGjFKXtyQ9AwtMZEcfPnmsim4xzAfj39RBSWX09klNm2ux
И всё.
(Добавление)
Почему-то он не передаёт xml. У!... Я уже столько написал, что мозги путаются в таких простых вещах!..
-----<?php ?> - идеальная программа на php
Proffessional
Отправлено: 19 Мая, 2011 - 20:11:42
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Извините, я наверное надоедлив.. Теперь post выглядит так:
CODE (
htmlphp ):
скопировать код в буфер обмена
POST /feeds/2415983713197246636/posts/default HTTP/1.1
Host: www.blogger.com
Accept: */*
Content-type: application/atom+xml
Content-Length:0
Authorization: GoogleLogin auth=DQAAAJYAAADfPLX_-xYsXDmgOevur0msUfr5Gb581EVrPKv6B-3nWebiEGT320RZGKuytWgNfF2wFlhA_DO68kGBpX1U65XW0tOdAGqugoSi4ZfjfHYLns6V4GWHezuOxifLP5adeP33B7UZ8FNmNdv8ATMM8iLgJJcfnLkmVCT6RAx6-SLXnkYotgD8-naT6R1ZxaKzmN1jURNlGcSeE2y1LYRIzPUf
<? xml version= "1.0" encoding= "UTF-8" ?>
< entry xmlns= "http://www.w3.org/2005/Atom" >< title type= "text" > Test</ title>< content type= "xhtml" > Test!</ content></ entry>
Ответ сервера такой же. Теперь уже совсем не понятно в чём проблема...
-----<?php ?> - идеальная программа на php
Мелкий
Отправлено: 19 Мая, 2011 - 20:25:46
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009
Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Proffessional пишет: Content-Length:0
Меня вот это несколько смущает.
Ну и покурите поиск гугла, должны быть маны и более развёрнутые и с другими примерами.
Proffessional
Отправлено: 19 Мая, 2011 - 21:30:24
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Апр. 2011
Откуда: Москва, Россия
Помог: 0 раз(а)
Мелкий пишет: Proffessional пишет: Content-Length:0
Меня вот это несколько смущает.
Ну и покурите поиск гугла, должны быть маны и более развёрнутые и с другими примерами.
Исправил. Теперь пришёл к изначальной ошибке, первой из всей этой череды:
Как я знаю, это сообщение выводит Java когда перед открытием xml есть что-то ещё, хоть один пробел. Но здесь его нету (я же не зря использовал new DOMDocument?). Что же это может быть?
Да, извините, мне никак не повысить Вам репутацию, не разрешают
-----<?php ?> - идеальная программа на php
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB