Gå til innhold

Web Service på localhost + WebClient


Anbefalte innlegg

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
Videoannonse
Annonse

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

...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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...