Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как передать бинарный файла из Web сервиса и прочитать на клиенте ? / 4 сообщений из 4, страница 1 из 1
28.04.2006, 13:46
    #33697369
vashkovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать бинарный файла из Web сервиса и прочитать на клиенте ?
Суть задачи следующая.
Есть вер сервис который дожен вернуть на клиента DataSet в бинарном виде (zipуем мы по дороге) :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 MemoryStream memoryStream = new MemoryStream( 1024 );
                GZipOutputStream gzipStream = new GZipOutputStream(memoryStream);
                dataSet.WriteXml(gzipStream);
                gzipStream.Finish();
                memoryStream.Seek( 0 , SeekOrigin.Begin); 
                
                DataSet ds = new DataSet();
                
                ds.Tables.Add();
                ds.Tables[ 0 ].TableName = "GetNomenclature_Zip";
                ds.Tables[ 0 ].Columns.Add("GetNomenclature_Zip");
                
                object[] val = new object[ds.Tables[ 0 ].Columns.Count];
                 StreamReader rdr_Zip = new StreamReader(memoryStream);
                val[ 0 ] = rdr_Zip.ReadToEnd();
                ds.Tables[ 0 ].Rows.Add(val);

                GC.Collect();
                return ds;

В итоге мы получаем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
  <?xml version="1.0" encoding="utf-8" ?> 
- <DataSet xmlns="http://impharma.ru/webservices/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="GetNomenclature_Zip">
- <xs:complexType>
- <xs:sequence>
  <xs:element name="GetNomenclature_Zip" type="xs:string" minOccurs="0" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:choice>
  </xs:complexType>
  </xs:element>
  </xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <GetNomenclature_Zip diffgr:id="GetNomenclature_Zip1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
  <GetNomenclature_Zip>N@w6iФDbd.b4q%@t \M@(+|w``. S=D͸ 1 \DؔC;"_jDqH/4ӷҒ NsۜX_<m=އQ!54=7z3 {ET~mRZP4ԌF6iIJ̒ `\w5bJ@2O#dq/kz C EJzۅ <8k5^n!2kkH[]MPwL MJH 5mU ,& ]H{6`Lw\q%wq9"!f</GetNomenclature_Zip> 
  </GetNomenclature_Zip>
  </NewDataSet>
  </diffgr:diffgram>
  </DataSet>

На клиенте пытаюсь получить
Код: plaintext
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
WebRequest wrq = HttpWebRequest.Create(_LocalConnectString + "GetNomenclature_Zip?" +
                                       "&_datachange=01.01.1900");
            wrq.Proxy = GlobalProxySelection.GetEmptyWebProxy();
            wrq.Credentials = CredentialCache.DefaultNetworkCredentials;

            WebResponse wrs = (HttpWebResponse)wrq.GetResponse();
            StreamReader rdr = new StreamReader(wrs.GetResponseStream());// rq.GetResponse().GetResponseStream());
            string result = rdr.ReadToEnd();

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.LoadXml(result); // т.к в виде XML то и разбираю через XMLDocument

XmlNodeList xmlnodes_zakaz = xmldoc.DocumentElement.SelectNodes("//NewDataSet/GetNomenclature_Zip");
            foreach (XmlNode nd_zakaz in xmlnodes_zakaz)
            {
                if (nd_zakaz["GetNomenclature_Zip"].InnerText != "")
                {
            string res = "";//  xmldoc.DocumentElement.InnerText;// nd_zakaz["GetNomenclature_Zip"].InnerText;
// Вот здесь загвозка т.к сюда я получаю не бинарный файл !!!
                    StreamReader rdr_Zip = new StreamReader(xmldoc.DocumentElement.InnerText);
// - и вот здесь разумееется ошибка !!!!
// И в этом собственно вопрос. Как мне реализовать данную схему
// в какую сторону смотреть ?

// ну и дальше хочеться просто  раззиповать  ....
                    ZipInputStream s = new ZipInputStream(rdr_Zip.BaseStream);
                    ZipEntry theEntry;
                    while ((theEntry = s.GetNextEntry()) != null)
                    {

                        StreamReader streamReader = new StreamReader(s); // File.Create(settings_outpath);
                        res = streamReader.ReadToEnd();
                    }

                    s.Close();
                }

 
...
Рейтинг: 0 / 0
28.04.2006, 17:08
    #33698214
Такова жизнь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать бинарный файла из Web сервиса и прочитать на клиенте ?
А что мешает создать прокси-класс?
...
Рейтинг: 0 / 0
28.04.2006, 17:09
    #33698217
vashkovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать бинарный файла из Web сервиса и прочитать на клиенте ?
Такова жизньА что мешает создать прокси-класс?

если можно примеры
...
Рейтинг: 0 / 0
28.04.2006, 17:34
    #33698277
Anton_Snitko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать бинарный файла из Web сервиса и прочитать на клиенте ?
например в visual studio добавить WEB reference.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как передать бинарный файла из Web сервиса и прочитать на клиенте ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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