powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поле с xml отправить в WEB Service
24 сообщений из 24, страница 1 из 1
Поле с xml отправить в WEB Service
    #38962382
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Укажите куда рыть, а то я не знаю даже как поисковый запрос сформировать.

Получаю из MySQL поле, которое имеет тип TEXT и в котором хранится xml вида:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" >
 <soap-env:Header/>
 <soap-env:Body>
  <ns1:ZwsLoyFormReturn xmlns:ns1="urn:sap-com:document:sap:soap:functions:mc-style" >
   <ItFormReturn>
    <item>
     <ExternalCardNu>K000000000871</ExternalCardNu>
     <FormNumber>A2222222</FormNumber>
    </item>
   </ItFormReturn>
  </ns1:ZwsLoyFormReturn>
 </soap-env:Body>
</soap-env:Envelope>


Насколько я понимаю - это так называемый POST

Вот как теперь это передать в Web Service? Такое возможно вообще? Или надо это разбирать, доставать item и после этого обращаться к web service как обычно и передавать в него вытащенные параметры?
Спасибо.
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962388
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот берешь ровно этот текст и постишь на адрес сервиса с контенттайпом application/soap+xml
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962389
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может мне надо копать в этом направлении - HttpWebRequest?
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962392
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Может мне надо копать в этом направлении - HttpWebRequest?это лишь способ передачи, отправляй как умеешь.
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962393
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВот берешь ровно этот текст и постишь на адрес сервиса с контенттайпом application/soap+xml
Через что? через это HttpWebRequest?
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962399
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81AntonariyВот берешь ровно этот текст и постишь на адрес сервиса с контенттайпом application/soap+xml
Через что? через это HttpWebRequest?да
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962402
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Спасибо. Буду копать
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962423
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Antonariy,

Спасибо. Буду копатьдля сокращения времени раскопок:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        Dim mXmlHTTP As HttpWebRequest, wr As System.Net.WebResponse
        mXmlHTTP = HttpWebRequest.Create(sServiceUrl)
        mXmlHTTP.ContentType = "application/soap+xml" 
        mXmlHTTP.KeepAlive = False
        mXmlHTTP.Method = "post"
        With New StreamWriter(mXmlHTTP.GetRequestStream)
            .Write(sXML)
            .Flush()
        End With
        wr = mXmlHTTP.GetResponse()
        mXmlHTTP.GetRequestStream.Dispose()
        sXML = (New StreamReader(wr.GetResponseStream)).ReadToEnd
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962456
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Всем привет. Укажите куда рыть, а то я не знаю даже как поисковый запрос сформировать.
Получаю из MySQL поле, которое имеет тип TEXT и в котором хранится xml вида:
Насколько я понимаю - это так называемый POST
Вот как теперь это передать в Web Service? Такое возможно вообще? Или надо это разбирать, доставать item и после этого обращаться к web service как обычно и передавать в него вытащенные параметры?
Спасибо.
в 99% случаев WebService как раз и принимает XML или JSON
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962494
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariySemen81Antonariy,

Спасибо. Буду копатьдля сокращения времени раскопок:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        Dim mXmlHTTP As HttpWebRequest, wr As System.Net.WebResponse
        mXmlHTTP = HttpWebRequest.Create(sServiceUrl)
        mXmlHTTP.ContentType = "application/soap+xml" 
        mXmlHTTP.KeepAlive = False
        mXmlHTTP.Method = "post"
        With New StreamWriter(mXmlHTTP.GetRequestStream)
            .Write(sXML)
            .Flush()
        End With
        wr = mXmlHTTP.GetResponse()
        mXmlHTTP.GetRequestStream.Dispose()
        sXML = (New StreamReader(wr.GetResponseStream)).ReadToEnd

Еще раз спасибо Я в этом новичок. Я пишу на C# и вот на этом StreamWriter(mXmlHTTP.GetRequestStream) у меня ошибка.
Я если честно не понимаю, а где непосредственно сервису мы кидаем полученную xml из запроса к таблице MySQL (в моем случае).
Понимаю, что создаем поток, записываем туда xml и тут у меня пока тупик
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962502
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибку поборол. Забыл () указать
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962517
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Я если честно не понимаю, а где непосредственно сервису мы кидаем полученную xml из запроса к таблице MySQL (в моем случае).где-то в этих строках, точнее не скажу, не разбирался:

Код: vbnet
1.
2.
3.
4.
            .Flush()
        End With
        wr = mXmlHTTP.GetResponse()
        mXmlHTTP.GetRequestStream.Dispose()

если забыть одну из них, то либо запрос не уйдет, либо ответ потеряется.
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962558
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Всем привет. Укажите куда рыть, а то я не знаю даже как поисковый запрос сформировать.

Получаю из MySQL поле, которое имеет тип TEXT и в котором хранится xml вида:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" >
 <soap-env:Header/>
 <soap-env:Body>
  <ns1:ZwsLoyFormReturn xmlns:ns1="urn:sap-com:document:sap:soap:functions:mc-style" >
   <ItFormReturn>
    <item>
     <ExternalCardNu>K000000000871</ExternalCardNu>
     <FormNumber>A2222222</FormNumber>
    </item>
   </ItFormReturn>
  </ns1:ZwsLoyFormReturn>
 </soap-env:Body>
</soap-env:Envelope>


Насколько я понимаю - это так называемый POST

Вот как теперь это передать в Web Service? Такое возможно вообще? Или надо это разбирать, доставать item и после этого обращаться к web service как обычно и передавать в него вытащенные параметры?
Спасибо.
Сгенерируй класс-клиент через xsd.exe
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962588
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wr = mXmlHTTP.GetResponse() на этом зависает
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962589
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81wr = mXmlHTTP.GetResponse() на этом зависаетвозможно сервер тупит или недоступен. подожди пока отвиснет и что-нибудь сообщит.
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962746
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем сделал так (часть кода):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 
            ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE(); // веб сервис
               
            DataSet CashSet = new DataSet();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            queryStr = "SELECT request FROM table";
            DataTable TRequest = new DataTable("TRequest");
            CashSet.Tables.Add(TRequest);

            dataAdapt.SelectCommand.CommandText = queryStr;
            dataAdapt.Fill(CashSet, "TRequest");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(wMa_Save.Url));
            request.Method = "POST";
            request.Proxy = null;
            request.KeepAlive = false;
            request.ContentType = "application/soap+xml";

            foreach (DataRow hRow in TRequest.Rows)
            {
                StreamWriter streamWr = new StreamWriter(request.GetRequestStream());
                streamWr.Write(hRow["request"].ToString());
                WebResponse wr = request.GetResponse();
                StreamReader sr = new StreamReader(wr.GetResponseStream());
                text = sr.ReadToEnd();
            }


Виснет и все тут на WebResponse wr = request.GetResponse();

Может я как-то xml не правильно подсовываю? (streamWr.Write(hRow["request"].ToString());)
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962752
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще, если сам веб сервис требует авторизации. в проекте есть WEB References на него. Соответственно я его просто добавляю в using и определяю ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE(); Далее с помощью wMa_Save.Credentials = new NetworkCredential провожу авторизацию.

Теперь же мне нужно в этот веб сервис сделать POST. И ничего не получается. Как указал выше - зависает на одной строке кода
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962851
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
от куда они лезут с такими названиями? "ZWS_LOY_MA_SAVE"
лично я, лучшем случае, увидев такое название, решил бы, что это константа
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962871
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesот куда они лезут с такими названиями? "ZWS_LOY_MA_SAVE"
лично я, лучшем случае, увидев такое название, решил бы, что это константа
Это SAP
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962913
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, заработало
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
         foreach (DataRow hRow in TRequest.Rows)
            {
                using (Stream streamWr = request.GetRequestStream()) 
                {
                    byte[] bytes = Encoding.UTF8.GetBytes(hRow["request"].ToString());
                    streamWr.Write(bytes, 0, bytes.Length);
                    bytes = null;
                }
                using (WebResponse wr = request.GetResponse())
                {
                    using (StreamReader sr = new StreamReader(wr.GetResponseStream()))
                    {
                        text = sr.ReadToEnd().Trim();
                    }
                }

            }
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962915
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Осталось победить еще кое что )))
Первая строка в foreach проходит нормально. А вот вторая строка вываливается с ошибкой на строке streamWr.Write(bytes, 0, bytes.Length); - Дополнительные сведения: Поток не поддерживает параллельные операции чтения и записи при вводе и выводе.

Это как победить?
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38962978
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Осталось победить еще кое что )))
Первая строка в foreach проходит нормально. А вот вторая строка вываливается с ошибкой на строке streamWr.Write(bytes, 0, bytes.Length); - Дополнительные сведения: Поток не поддерживает параллельные операции чтения и записи при вводе и выводе.

Это как победить?вы пытаетесь постоянно записать какие то данные по смещению 0, а туда уже вы что то записывали
соответственно на каждой итерации смещение должно быть увеличено на длину данных bytes.Length
но вообще есть методы проще и прямо из коробочки
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38963006
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я подставил в код
Код: c#
1.
streamWr.Flush()

но все равно не помогает

Roman Mejtesно вообще есть методы проще и прямо из коробочки
Это какие?
...
Рейтинг: 0 / 0
Поле с xml отправить в WEB Service
    #38963071
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Я подставил в код
Код: c#
1.
streamWr.Flush()


но все равно не помогает
У Stream'а еще есть много других методов. Попробуйте и их...
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поле с xml отправить в WEB Service
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]