如何发送ASP.NET webservice的参数

时间:2013-12-30 16:17:43

标签: c# web-services post get asmx

我有一个大学项目,我应该实现一个使用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惯例。 提前谢谢。

3 个答案:

答案 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&parameter2=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)

这有帮助吗?对不起,简短的回复,只是打包回家。

$.ajax & passing data to .asmx webservice