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

Posted

技术标签:

【中文标题】如何调用 Web 服务并使用 URL 传递参数【英文标题】:How can I call a web service and pass parameters using the URL 【发布时间】:2012-06-26 17:10:08 【问题描述】:

如何调用 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

但是失败了。

请指教。

非常感谢,

【问题讨论】:

【参考方案1】:

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

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

然后当你调用它时

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

【讨论】:

【参考方案2】:

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

【讨论】:

感谢 jonnyGold,它现在没有给我任何错误,但它没有显示输出,我怎么知道底层函数是否成功执行? 尝试将SOAP UI指向它。是一款不错的“外来”web服务调试工具。【参考方案3】:

如果需要传递多个参数,请使用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());
    

【讨论】:

感谢 Ashwin,它没有显示输出,所以我怎么知道底层函数是否成功执行? 看看 kad1r 的答案,你需要一个 WebMethod 来处理这些查询和像这样的 URL http://[localhost]:31856/MySystem/MyAPI.asmx/getVariables?op=getHeight&a=254&b= 1 我明白了,我的情况有点不同,我需要纯粹从URL执行web服务(用于性能测试)并得到输出。 你需要什么输出,你想要完成什么? 我的方法返回一个字符串,问题是当我从带有参数的 URL 执行它时,是否有可能查看输出?【参考方案4】:

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

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

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

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

之后,我可以使用以下命令调用 web 服务(再次删除了 op 参数):

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

【讨论】:

【参考方案5】:

按照以下步骤操作

第 1 步: 点击 Add Service Reference 并添加 service 的引用。 它在部分类中创建对服务的引用以及在项目命名空间下调用服务所需的所有方法。

第 2 步: 在 using 中添加相同的类 ..

第 3 步: 浏览服务引用下生成的类文件并获取它的名称。

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

【讨论】:

以上是关于如何调用 Web 服务并使用 URL 传递参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在调用WebService方法时,传递对象数组参数

如何使用 jQuery 将 Windows 身份验证传递给 Web 服务?

在 SOAP Web 服务调用中将 Kerberos 票证作为参数传递

什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c

ajax方式下载文件

url调用action并传递参数的写法