在web api的get方法中传递多个参数

时间:2016-04-05 09:47:17

标签: asp.net-web-api get

我的web api get方法包含以下参数

public DataSet Get([FromUri] EloQuaParameters paramss)
{


Hive9Common obj = new Hive9Common();
            obj.credentials = paramss.credentials;
            obj.fromDate = paramss.fromDate;
            obj.toDate = paramss.toDate;
            obj.fieldMap = paramss.fieldMap;
//Credential & fieldmap always remain null
}

EloquaParameters的课程如下:

public class EloQuaParameters
        {
            public Dictionary<string, string> credentials { get; set; }
            public DateTime? fromDate { get; set; }
            public DateTime? toDate { get; set; }
            public Dictionary<string, string> fieldMap { get; set; }
        }

我从我的应用程序中调用此方法如下:

HttpClient client;
            string url = "http://localhost:54371/api/values/Get?credentials=" + credentialDictionary + "&fromDate=" + fromDate + "&toDate=" + toDate + "&fieldMap=" + fieldmpa;
            client = new HttpClient();
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
            HttpResponseMessage responseMessage = await client.GetAsync(url);
            if (responseMessage.IsSuccessStatusCode)
            {
                var responseData = responseMessage.Content.ReadAsStringAsync().Result;

            }

webApi方法fromdate&amp; todate参数接收适当的值,但两个字典参数始终保持为空。我怎么能够获得该字典参数的值。 请帮忙

1 个答案:

答案 0 :(得分:0)

你真的不能。字典不是设计为在URL中传递的。想想如果你在字典里有大量的项目会发生什么。

您应该为此方法使用POST,原因如下:

首先,它将提供一种在单个对象中指定参数的方法,这可能有其优点。其次,在POST中发送参数会将这些参数放在请求正文中,这样就可以通过HTTPS发送这些参数,无论如何您都应该使用这些参数,因为您正在传递凭据。这些天,没有理由不为所有事情使用HTTPS。

将参数作为POST发送真的是一个微不足道的变化。

希望有所帮助。