简体   繁体   中英

JSON result in ASMX webservice

I have ASMX webservice and I want to return the result in JSON format. Its working fine when my web method is without parameters.

    [WebService(Namespace = "http://www.arslanonline.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // 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 AuthService : System.Web.Services.WebService {

        public AuthService () {

            //Uncomment the following line if using designed components 
            //InitializeComponent(); 
        }

        [WebMethod]
        [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
        public string Authenticate(string username, string password, string appId)
        {
            return ToJson("Hello World");
        }

 public static string ToJson(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }

 [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Test()
    {
        return ToJson("Hello World");
    }

When I am calling My Test Web Method This Way Its Working Fine

string url= "http://localhost:45548/Moves/AuthService.asmx/Test";
 string dataToPost= "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json;";
                request.BeginGetRequestStream(new AsyncCallback(DoHTTPPostRequestReady), new HttpWebRequestData<string>()
                {
                    Request = request,
                    Data = dataToPost
                });

and returning my JSON result. But for my second method Authenticate that is taking some parameters I am requesting like that

string url= "http://localhost:45548/Moves/AuthService.asmx/Authenticate";
     string dataToPost= "username=ABC&password=123&appid=1";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Method = "POST";
                    request.ContentType = "application/json;";
                    request.BeginGetRequestStream(new AsyncCallback(DoHTTPPostRequestReady), new HttpWebRequestData<string>()
                    {
                        Request = request,
                        Data = dataToPost
                    });

and its giving me Not Found Error But When I Change to request.ContentType = "application/x-www-form-urlencoded" ; It works fine and returns me result in XML but not in JSON format. Why this is happening Can Please anyone tell where is the glitch in my code.

Use void as return type for the method.

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void Test()
{
   System.Web.HttpContext.Current.Response.Write(ToJson("Hello World"));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM