如何调用Web服务并使用URL传递参数

时间:2012-06-25 12:31:43

标签: asp.net web-services url

如何调用ASP .NET Web服务并使用URL传递参数?

例如,服务的URL就像是

http://[localhost]:31856/MySystem/MyAPI.asmx?op=getHeight

我需要传递两个参数a和b,我试过

http://[localhost]:31856/MySystem/MyAPI.asmx?op=getHeight?a=254&b=1

但失败了。

请建议。

非常感谢,

5 个答案:

答案 0 :(得分:9)

如果您需要传递多个参数,请使用此格式param1=value1&param2=value2等等。所以您的链接应为:

http://[localhost]:31856/MySystem/MyAPI.asmx/AnyMethodName?op=getHeight&a=254&b=1

你需要一个像这样的方法。这个方法返回一个字符串列表,它只是为了演示。

    [WebMethod]
    public List<string> AnyMethodName(string op, string a, string b)
    {
       //Do whatever you want, get answer
        return (ans.ToList());
    }

答案 1 :(得分:4)

将第二个?更改为&。如果您查看由http://[localhost]:31856/MySystem/MyAPI.asmx呈现的页面,它会向您显示如何将其称为HTTP GET

答案 2 :(得分:4)

我遇到了同样的问题,我需要在system.web -tag中的webconfig中添加以下内容:

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

其余的几乎就像已经提到的那样(使用Ashwin的回答中的例子,只是删除了op参数)

   [WebMethod]
    public List<string> AnyMethodName(string a, string b)
    {
       //Do whatever you want, get answer
        return (ans.ToList());
    }

之后,我能够使用以下内容调用webservice(再次删除op参数):

http://localhost/MySystem/MyAPI.asmx/AnyMethodName?a=254&b=1

答案 3 :(得分:2)

不是那样的。
您必须在函数中声明参数。 例如,这是一个小例子:

[WebMethod]
public string[] getVariables(string sop, string sgsm)
{ // do what you want ... }

然后当你打电话时

WebReference.Service1 service = new WebReference.Service1();
service.getVariables("foo", "blabla");

答案 4 :(得分:0)

遵循以下步骤

步骤1:点击添加服务参考并添加服务参考。 它在部分类中创建对服务以及在项目名称空间下调用服务所需的所有方法的引用。

步骤2:使用..

添加相同的类

步骤3:浏览在服务引用下生成的类文件,并获取其名称。

第4步:创建一个new Service1SoapClient("Service1Soap");之类的客户端,然后将该服务用作Method。您可以像从另一个方法调用一个方法时那样传递参数(如果需要)。