Autor Beitrag
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 18.06.07 11:15 
Hallo, eine recht kurze Frage:

Wie schaffe ich es, über einen WebService Dateien zu übertragen? Im Moment weiß ich noch nicht, wie groß sie sein werden. Einen Stream kann ich ja nicht einfach rüberschicken *g*.
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 18.06.07 11:30 
OK, habe es doch selbst hinbekommen, nachdem ich aufgehört habe, mit Streams herumzuprobieren:

Die Service-Prozedur sieht einfach so aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        [WebMethod]
        public byte[] GetFile(string filename)
        {
            
            if (File.Exists(filename))
            {
                FileStream stream = new FileStream(filename, FileMode.Open);
                byte[] result = new byte[(int) stream.Length];
                stream.Read(result, 0, (int) stream.Length);
                return result;
            }
            return null;
        }

In der WinApp referenziert man dann einfach den WebService und holt sich die Datei mit folgendem Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
        private void button1_Click(object sender, EventArgs e)
        {
            localhost.Service1 service = new WindowsApplication1.localhost.Service1();
            FileStream stream = new FileStream(textBox2.Text, FileMode.CreateNew);
            byte[] data = service.GetFile(textBox1.Text);
            stream.Write(data, 0, data.Length);
            stream.Close();
        }

Ist zwar noch nicht perfekt (Statusbalken sollte noch hinzugefügt werden), aber funktioniert grundsätzlich mal.
lemmi68
Hält's aus hier
Beiträge: 15

WinXP / SuSE 9.2 / Windows 7 Beta
Delphi 7 Enterp. / Kylix3 / VS 2008
BeitragVerfasst: So 08.07.07 22:19 
Titel: Mal eine frage dazu
Hallo UGrohne,

wenn ich einen WebService unter Tomcat und Apache in Java habe, dann gibt es doch dann die Möglichkeit mit dem SoapAttachment. Wenn ich jetzt einen WebService Client in C# machen möchte, wie geht das dann? Ich habe das Problem das beim Import des WSDL's. Da wird der Datentyp immer angemeckert. Wie löse ich das in C# für den Client? Und gibt es so eine Funktion auch auf Serverseite unter Windows? Das müsste doch auch im SOAP definiert sein oder?

Also einen C# Client für diesen WebService:

ws01.direktbrief.de/...ektresultWS.jws?wsdl



Gruß,

Holger
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 09.07.07 10:00 
Es sieht so aus, als ob der Typ xml.apache.org/xml-soap:DataHandler von .NET nicht unterstützt wird. Ich hab dazu auch im Netz was gefunden, dort wird empfohlen beim Java-Service eine Base64-Kodierung zu verwenden. Ich hab aber keine Ahnung, wie das dort dann aussehen könnte. Auf jeden Fall musst Du wohl den Service selbst anpassen, damit Du in .NET einen Client schreiben kannst.