webForumDet fria alternativet

Anropa web service med GET och valfria parametrar

.NET

3 svar · 1 394 visningar · startad av adaoja

Medlem sedan jan. 20103 inlägg
Frågan#1

Hej!

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&param2=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
Daniel

Medlem sedan dec. 2005664 inlägg
#2

Titta på rest-service (restful)
T ex: http://www.codeproject.com/KB/architecture/RESTWebServicesPart1.aspx

Medlem sedan jan. 20103 inlägg
#3

cok skrev:

Titta på rest-service (restful)
T ex: http://www.codeproject.com/KB/architecture/RESTWebServicesPart1.aspx

Hej

Tack för tipset

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

Medlem sedan jan. 20103 inlägg
#4

Hej

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&param1=value...

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)