Question

I have an university project where I should implement a java powered website that uses web services: some that will be created as servlets and others that should be created as .NET "servlets". I created the java servlet that can be called as /loginservice/username="__________"&md5="____________". All good. Now I must implement another service in .NET. I created a ASP.NET web service application but this type of application uses POST instead of GET. I found out that this could be changed by adding

[ScriptMethod(UseHttpGet=true)]

but the problem is that I can't pass parameters like I do in Java. There is no way of using POST anywhere because I don't want to rewrite the code in 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;
        }

    }
}

Here is the code in C# If I use the browser and manually insert the values all is ok.

But I can't use the GET convention. Thank you in advance.

Was it helpful?

Solution

I finally solve the problem by removing

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

and adding

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

to Web.config

Now I can call the service using

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

OTHER TIPS

This is an example of how I do it in WCF. I'm sure it will be very similar for your Asp.net service. If nothing else, it should point you in the right direction.

This is your function declaration in your interface file.

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

This goes into a class that implements that interface.

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

Your GET request would then look something like http://yoursite.com/DoWork?message=param1&message2=param2

Does this help? Sorry for the short reply, just packing up to go home.

$.ajax & passing data to .asmx webservice

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top