visual studio create crear consumir c# web-services post get asmx

crear - create web service c# visual studio 2015



¿Cómo puedo enviar parámetros para el servicio web ASP.NET? (3)

Tengo un proyecto universitario en el que debería implementar un sitio web potenciado por Java que utiliza servicios web: algunos que se crearán como servlets y otros que deberían crearse como "servlets" de .NET. Creé el servlet de Java que se puede llamar como / loginservice / username = "__________" y md5 = "____________". Todo bien. Ahora debo implementar otro servicio en .NET. Creé una aplicación de servicio web ASP.NET pero este tipo de aplicación usa POST en lugar de GET. Descubrí que esto podría cambiarse agregando

[ScriptMethod(UseHttpGet=true)]

pero el problema es que no puedo pasar parámetros como lo hago en Java. No hay forma de utilizar POST en ninguna parte porque no quiero reescribir el código en Java.

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Script.Services; namespace t5_services { /// <summary> /// Summary description for Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] [ScriptMethod(UseHttpGet=true)] public string Package(String packagename, String lastname) { return "Hello " + packagename + ": " + lastname; } } }

Aquí está el código en C # Si uso el navegador e inserto manualmente los valores todo está bien.

Pero no puedo usar la convención GET. Gracias de antemano.


Este es un ejemplo de cómo lo hago en WCF. Estoy seguro de que será muy similar para su servicio de Asp.net. Si nada más, debería apuntarle en la dirección correcta.

Esta es su declaración de función en su archivo de interfaz.

[OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "DoWork?message={message}&message2={message2}")] string DoWork(string message, string message2);

Esto entra en una clase que implementa esa interfaz.

public string DoWork(string message, string message2) { return "foobar"; }

Su solicitud GET se vería algo así como http://yoursite.com/DoWork?message=param1&message2=param2


Finalmente resuelvo el problema eliminando

[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)]

y agregando

<webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices>

a Web.config

Ahora puedo llamar al servicio usando

http://localhost:2586/Service1.asm/HelloWorld?parameter1=abc&parameter2=cde