可以从浏览器调用带有非字符串参数的WCF JSON WebService操作吗?

时间:2014-08-27 11:56:04

标签: c# json web-services wcf uritemplate

我知道UriTemplate只支持字符串参数,除非你的形式如下(id = {id}等)。例如:

Can I pass non-string to WCF RESTful service using UriTemplate?

但是,我无法完成以下工作。即使我将第二个参数更改为字符串(不是字符串数组)。通过在地址字段中输入URL,可以从浏览器调用此类操作吗?

[WebGet(ResponseFormat = WebMessageFormat.Json, 
        UriTemplate = "id={id}/legend={legend}/x={x}/y={y}")]
public Stream GetMapPicture(int id, string[] legend, double x, double y)

如果我将参数更改为字符串并输入:

,则一切正常
http://localhost:8732/Service1/id=732/legend=[343434, 555]/x=43/y=23

谢谢!

1 个答案:

答案 0 :(得分:1)

我在问题中的链接中有一个答案:

Can I pass non-string to WCF RESTful service using UriTemplate?

String[]

应该是必须解析/反序列化的字符串。

然而,有一个int和一个double,它看起来像这样:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    Stream GetMapPicture(int id, double x);
…
 public class Service1 : IService1
 {
    [WebGet(ResponseFormat = WebMessageFormat.Json, 
        UriTemplate = "MapPicture/?id={id}&x={x}")]
    public Stream GetMapPicture(int id, double x)
    {

然后从浏览器中消耗它:

http://localhost:8732/service1/MapPicture/?id=3&x=6.21

因为没有人将此标记为重复,我也在此处发布了答案。与链接的不同之处在于,这里有两个参数与&符号(&)

组合

-m