asp.net json web-services c#-3.0 asmx

asp.net - Cómo obtener respuesta JSON de un servicio web 3.5 asmx



web service rest json c# (2)

Enfrenté el mismo problema e incluí el siguiente código para que funcione.

[WebMethod] [ScriptMethod(UseHttpGet=true ,ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Context.Response.Write("Hello World"); //return "Hello World"; }

Actualizar:

Para obtener un formato JSON puro, puede usar el serializador de JavaScript como se muestra a continuación.

public class WebService1 : System.Web.Services.WebService { [WebMethod] [ScriptMethod(UseHttpGet=true ,ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { JavaScriptSerializer js = new JavaScriptSerializer(); Context.Response.Clear(); Context.Response.ContentType = "application/json"; HelloWorldData data = new HelloWorldData(); data.Message = "HelloWorld"; Context.Response.Write(js.Serialize(data)); } } public class HelloWorldData { public String Message; }

Sin embargo, esto funciona para tipos complejos, pero la cadena no muestra ninguna diferencia.

Tengo el siguiente método:

using System.Web.Services; using System.Web.Script.Services; using System.Web.Script.Serialization; using Newtonsoft.Json; using System.Collections; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //[System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] // [System.Web.Script.Services.ScriptService] public class Tripadvisor : System.Web.Services.WebService { public Tripadvisor () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string HotelAvailability(string api) { JavaScriptSerializer js = new JavaScriptSerializer(); string json = js.Serialize(api); //JsonConvert.SerializeObject(api); return json ; }

Aquí configuro el atributo ResponseFormat porque json sigue siendo devuelto como XML.

Quiero jSON formet utilizando este servicio de asmx cualquier Idea? Gracias


Solo una duda ¿Cuándo no recibes una respuesta JSON? Porque cuando invocas el servicio web desde el cliente (supongo que es un navegador web, es decir, xhr), debes especificar el encabezado de tipo de contenido en la solicitud como "application / json; charset = yourcharset".

Creo que la solución anterior siempre devuelve json, independientemente del tipo de contenido que especifique el cliente. El framework dotnet asmx permite esto usando el método de encabezado de tipo de contenido, por lo que lo anterior podría clasificarse como un hack, cuando hay una solución ordenada disponible.

Pregunta similar en Return Json Data del servicio web ASMX

Esto también podría ser útil -> http://forums.asp.net/p/1054378/2338982.aspx#2338982

PD: supongo que estás usando dotnet versión 4.