Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Обмен XML запросами


Автор: Artemon 11.8.2006, 09:27
Подскажите пожалуйста, как можно обмениватьс XML запросами с сайтом,

www.e-atlas.ru - дали мне формат XML запроса: 
<req>
    <x>7411971</x>
    <y>6182434</y>
    <zoom>3265</zoom>
    <w>400</w>
    <h>300</h>
    <id>15266</id>
</req>

Как его послать сайту, а затем получить в такомже формате ответ?

Автор: Artemon 11.8.2006, 09:47
P.S.
     При попытке добавить "web reference" в visual studio - рна  мне говорит что не найдено web сервисов, может быть можно как-то еще послать XML запрос?

Автор: mr.DUDA 11.8.2006, 11:28
Можно воспользоваться HttpWebRequest и отправить обычную строку с XML со значениями.

Автор: Artemon 11.8.2006, 12:03
А как получить ответ?

Автор: Artemon 11.8.2006, 13:21
проделал следующую операцию:
Код

protected void Button1_Click(object sender, EventArgs e)
    {
        string uriStr = "http://e-atlas.ru";
        string XmlData = "<?xml version = \"1.0\"?>" +
                         "<req>" + 
                        "<x>7411971</x>" +
                         "<y>6182434</y>" +
                         "<zoom>3265</zoom>" +
                         "<w>400</w>" +
                         "<h>300</h>" +
                         "<id>15266</id>" +
                         "</req>"
                         ;

        XmlDocument xml = new XmlDocument();
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uriStr);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = XmlData.Length;
        StreamWriter sw = new StreamWriter(req.GetRequestStream());
        sw.Write(XmlData);
        sw.Close();


        HttpWebResponse result = (HttpWebResponse)req.GetResponse();
        Stream ReceiveStream = result.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("ascii");
        StreamReader sr = new StreamReader(ReceiveStream, encode);
        Char[] read = new Char[256];
        int count = sr.Read(read, 0, 256);
        StringBuilder sb = new StringBuilder();
        while (count > 0)
        {
            String str = new String(read, 0, count);
            sb.Append(str);
            count = sr.Read(read, 0, 256);
        }
        result.Close();

        string S = sb.ToString();
        }


В результате чего, мне браузер выдал ошибку 405.
Кто-нибудь знает в чем дело?

Автор: mr.DUDA 11.8.2006, 16:23
Надо смотреть в RFC, что за ошибка такая.

Автор: Artemon 11.8.2006, 17:21
А что смотреть-то:

"The remote server returned an error: (405) Method Not Allowed. "

Автор: arilou 14.8.2006, 22:32
Artemon, видать не туда ты постишь запрос. Посмотри внимательно какой должен быть УРЛ для поста.

Автор: Mad 16.8.2006, 15:08
Цитата(Artemon @  11.8.2006,  12:21 Найти цитируемый пост)
string XmlData = "<?xml version = \"1.0\"?>" +
                         "<req>" + 
                        "<x>7411971</x>" +
                         "<y>6182434</y>" +
                         "<zoom>3265</zoom>" +
                         "<w>400</w>" +
                         "<h>300</h>" +
                         "<id>15266</id>" +
                         "</req>"
                         ;


Цитата(Artemon @  11.8.2006,  12:21 Найти цитируемый пост)
req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = XmlData.Length;
        StreamWriter sw = new StreamWriter(req.GetRequestStream());
        sw.Write(XmlData);
        sw.Close();

И правильно пишет smile а указать id контрола, в котором эта xml строка набранна ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)