我有一个大学项目,我应该实现一个使用Web服务的java驱动的网站:一些将作为servlet创建,另一些应该创建为.NET“servlets”。我创建了可以被称为/ loginservice / username =“__________”& md5 =“____________”的java servlet。都好。 现在我必须在.NET中实现另一个服务。我创建了一个ASP.NET Web服务应用程序,但这种类型的应用程序使用POST而不是GET。我发现可以通过添加
来改变这一点[ScriptMethod(UseHttpGet=true)]
但问题是我不能像在Java中那样传递参数。 无法在任何地方使用POST,因为我不想用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;
}
}
}
这是C#中的代码 如果我使用浏览器并手动插入值,则一切正常。
但我不能使用GET惯例。 提前谢谢。
答案 0 :(得分:8)
我终于通过删除
来解决问题[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
并添加
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
到Web.config
现在我可以使用
来调用服务http://localhost:2586/Service1.asm/HelloWorld?parameter1=abc¶meter2=cde
答案 1 :(得分:1)
这是我在WCF中如何做的一个例子。我相信你的Asp.net服务会非常相似。如果不出意外,它应该指向正确的方向。
这是您的界面文件中的函数声明。
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "DoWork?message={message}&message2={message2}")]
string DoWork(string message, string message2);
这将进入实现该接口的类。
public string DoWork(string message, string message2)
{
return "foobar";
}
您的GET请求看起来像http://yoursite.com/DoWork?message=param1&message2=param2
答案 2 :(得分:0)
这有帮助吗?对不起,简短的回复,只是打包回家。