pakowanie xml w zipa a zipa w byte array

0

Witam
Na potrzeby webservic'u gdzie jako jeden z parametrów request'a muszę spakować Xml'a w zipa a z kolei zipa zamienić w tablicę bajtów. Chcę się upewnić że moja metoda robi to tak jak należy, ponieważ jako odpowiedź z servicu dostaję info "brak danych wejściowych". Oto mój kod:

 private string Xml = "<test:doc id=\"1\">" + 
                        "<test:doc1 name=\"abcd\"/>" +
                        ... etc
                        "</test:doc>"; // jakiś tam xml

        private byte[] XmlTest(string Xml)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(Xml);
            var buffer = new MemoryStream();
            byte[] bytes;
            
                using (var archive = new ZipArchive(buffer, ZipArchiveMode.Create, true))
                {
                    ZipArchiveEntry manifest = archive.CreateEntry("doc.xml");
                    using (Stream st = manifest.Open())
                    {
                        using (StreamWriter writerManifest = new StreamWriter(st))
                        {
                            writerManifest.WriteLine(xmlDoc.OuterXml);
                        }
                    }                

                    bytes = buffer.ToArray();
                    return bytes;
                }
        }
0

Sprawdzałeś debbugerem co zawiera bytes?

0

Jesteś pewny, że przekazujesz stringa z XMLem do webserwisu? Skopiowałem twój kod do konsoli i działa prawidłowo. Próbowałeś debugować czy przekazywany string Xml nie jest pusty?

0

@hipekk: W pętli wypisało mi ileś tam liczb.
@AdamWox: Niestety nie jest a nawet powiem więcej nie może być ponieważ zawartość jest zapisana w klasie.
Kurde myślałem że może z tym jest problem bo boksuję się z nfzetowym serwisem już tydzień.

0
kodweb11 napisał(a):

Niestety nie jest a nawet powiem więcej nie może być ponieważ zawartość jest zapisana w klasie.

Co to znaczy?

0

To znaczy że zmienna i jej wartość którą podaję jako parametr do tej metody jest zapisana w kodzie. (chyba trochę mało fachowo to tłumaczę)

0

@kodweb11: Możesz pokazać wywołanie tej metody XmlTest?

0

@kobi55: W telegraficznym skrócie:


class Test
{
      private byte[] XmlTest(string Xml)
      {
            ......
      }
      
     public void Wyslij()
     {
           string Xml = "<test:doc id=\"1\">" + 
                        "<test:doc1 name=\"abcd\"/>" +
                        ... etc
                        "</test:doc>"; 

           ServiceRequest servReq = new ServiceRequest();
           servReq.payload.streamload = XmlTest(Xml);
           ..................
     }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1