Hej! Det ser ut som att du vill använda REST. Tack Ola! Varför vill du kombinera REST och SOAP? Det är ju två olika sätt att göra ett Web-API på. Hej Eventuellt ett onödigt påpekande, men för att du ska kunna använda add service reference måste servicen vara igång.. samt du måste ha metadatapublicering påslaget HejAnropa web service med GET och valfria parametrar
Jag försöker skapa en web service som består av två funktioner. Dessa funktioner skall innehålla valfria parametrar. Jag utvecklar i C# och gör därför overloads av dessa [WebMethod] med olika "MessageName".
Jag vill dock kunna anropa samma funktion med Http GET. Jag vill alltså kunna skriva.
http://.../Service.asmx/Funktionsnamnet?param1=varde¶m2=varde
och även
http://.../Service.asmx/Funktionsnamnet?param1=varde
Går detta att göra överhuvudtaget? Har surfat runt men inte hittat ett exempel som visar att detta går.
Det är viktigt att jag inte behöver skriva ut samtliga parametrar.
Tacksam för svar och exempel
DanielSv: Anropa web service med GET och valfria parametrar
Men ASP.NET Web Servcies bygger ju inte på REST, utan på SOAP.
Så det korta svaret är att det inte går (på ett jätteenkelt sätt).
Men du kan ju skriva en egen HttpHandler eller helt enkelt en helt tom aspx sida, då kan du lätt nå dessa parametrar och sen skriva ditt resultat-XML till Outputstream. Du skulle kunna dra nytta av XmlSerializer/SoapSerializer för att automagiskt konvertera dina objekt till XML.
Enkelt exempel på hur man gör en HttpHandler:
http://www.jaltiere.com/?p=41Sv:Anropa web service med GET och valfria parametrar
Detta är dock nytt för mig och kommer att ta ett tag att lösa. Om du har fler exempel på kombinationen REST/SOAP och hur jag kan skilja på ett POST och GET-anrop i min webservice vore jag tacksam!
Jag väntar med att markera tråden som löst till dess att jag provat att skriva lite egen kod som fungerar.
Med vänliga hälsningar
DanielSv: Anropa web service med GET och valfria parametrar
Visst går det att blanda men jag förstår inte riktigt poängen med det.
GET/POST hittar du genom Request.HttpMethod.
Med SOAP gör du alltid POST till servern från klienten eftersom du skickar in (postar) XML som innehåller vad du vill göra. Det innebär att du bättre kan beskriva det som skickas in genom att du kan typa XML. Dvs du kan säga vad som är DateTime, Int32 osv. I en REST konversation har du bara text. Och du måste själva skriva kod för att casta om det, validera, osv. Nackdelen med SOAP är väl att det kan bli ganska pratigt (mycket XML). Om man behöver extrem performance och inte är rädd för att programmera lite kanske man väljer REST/JSON i stället för SOAP. Jag tycker inte man kan utse en vinnare utan de båda teknikerna är bra på olika saker helt enkelt.Sv:Anropa web service med GET och valfria parametrar
Ursäkta mitt tidigare inlägg. Jag är som sagt ny inom detta.
Jag har slängt ihop en WCF/REST-applikation nu med minsta möjliga kod som gör det jag vill. Jag kan alltså anropa en funktion som har valfria parametrar via GET i URI-raden.
Motsvarande
http://.../Service.svc/HelloWorld?Instr=HejHopp
eller utan variabel
http://.../Service.svc/HelloWorld
Problemet är bara att jag inte enkelt kan lägga till min tjänst på samma sätt som jag gjorde tidigare med en WebService/SOAP.
När jag väljer "Add Service Reference" i min ASP.NET-klient får jag felmeddelandet. "There was no endpoint listening at..".
Efter att ha läst lite om WCF-tjänster förstår jag att det här med endpoints är något väldigt viktigt.
Finns det någon som vet vilken inställning det måste finnas i WCF-tjänsten för att jag ska lägga till den? Eller är det någon inställning i klienten som jag ska göra.
Med vänliga hälsningar
Daniel
Sv: Anropa web service med GET och valfria parametrar
<serviceMetadata httpGetEnabled="true"> och samt en endpoint som implementerar IMetadataExchange
se t.ex. http://www.request-response.com/blog/PermaLink,guid,c9513d28-f580-4a33-b4e8-c15476799a9d.aspxSv:Anropa web service med GET och valfria parametrar
Nu har jag fått lite häng på detta.
Ni får ursäkta att jag inte riktigt har koll på alla protokoll men så här löste jag det.
Jag skapade en ASHX som tog emot ett HttpContext-objekt. Därifrån var det lätt
att ta emot variablerna både som POST och som GET via request.form respektive request. querystring.
Sedan byggde jag logik för min tjänst som returnerade ett XMLDokument.
När logiken var på plats flyttade jag all kod förutom "variabelmäcket" till en WebService som
jag lät returnera ett XMLDocument.
Jag tog emot objektet som en XMLNode (http://support.microsoft.com/kb/330600) och
fyllde mitt XMLDocument med den noden.
Skillnaden blev alltså att jag tog emot ett objekt och sökvägen blev då
service.ashx?Action=Funktionnamn¶m1=value...
Med vänliga hälsningar
Daniel