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.
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¶meter2=cde
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.
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.