Spartakus Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Først og fremst vil jeg bare si at proxy-klassen (klasse med referanse til webservicen) fungerer glimerende, men jeg vil få det til på den "manuelle" måten ved å bruke System.Net.WebClient-klassen og metoden UploadString() Hvordan får man webservicen til å godta content-type "text/xml"? Jeg skal sende over en SOAP-Envelope... Får bare "500; Internal server error" og andre feil som: Message: The underlying connection was closed: An unexpected error occurred on a receive. InnerException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. url = http://localhost:2777/PMService/Service.asmx Min web service-metode: public void Recieve(string data) Namespace på web-servicen: http://localhost/PMService Dette er XML'en jeg prøver å sende over: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Recieve xmlns="http://localhost/PMService"> <data>hallo!</data> </Recieve> </soap:Body> </soap:Envelope> Dette er kravet jeg må forholde meg til: POST /yourReceivePage.asp HTTP/1.1 Host: www.yourserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: root:Order Dette er min C#-kode: using (WebClient wc = new WebClient()) using (WebClient wc = new WebClient()) { wc.Headers.Add("SOAPAction", "http://localhost/PMService/Recieve"); res = wc.UploadString(URL, "POST", xml); } Kort og godt; hvordan overføre en SOAP-envelope ved å bruke HTTP POST med de kravene som er lagt til grunn? Lenke til kommentar
Manfred Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Hvorfor skal du gjøre det så vanskelig da? Hvis du har en WebService og skal bruke den i en C#-app er det jo bare til å legge den til i "Add web reference..." og så instansere en klasse av den, og kalle funksjonene direkte derifra... Ikke det at jeg skjønner helt poenget med å lage en WebService hvis du bare skal kalle den fra localhost, men... Lenke til kommentar
Spartakus Skrevet 20. desember 2007 Forfatter Del Skrevet 20. desember 2007 Det er ikke jeg som skal bruke den, det er et eksternt system som skal koble seg opp mot den. Jeg må derfor bare tilpasse meg best mulig. Grunnen at den kjører på localhost er pga testing og utvikling. Lenke til kommentar
Manfred Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Men uansett: Hvorfor kan du ikke bare legge den til som en web reference, og instansere en klasse av den (som sagt) og kalle funksjonen direkte fra objektet? Lenke til kommentar
Spartakus Skrevet 20. desember 2007 Forfatter Del Skrevet 20. desember 2007 ...det er ikke det som er poenget her. Jeg vet at DET fungerer, jeg vil bare få til vanlig HTTP POST med en web service på den gode gamle måten for å sjekke at jeg støtter de kravene som er satt. Det eksterne systemet og kravene kan jeg ikke gjøre noe med, jeg må bare forholde meg til dem (gjentakelse ftw). Jeg er rimelig fersk i dette med ASP.NET og web services, så jeg tenkte jeg skulle ta minste mostands vei og lage en webservice da det ligger ferdige templates på disse i VS. Det må vel være et eller annet sted man konfigurere hva web servicen kan motta og hvordan osv? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå