我的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参数接收适当的值,但两个字典参数始终保持为空。我怎么能够获得该字典参数的值。 请帮忙
答案 0 :(得分:0)
你真的不能。字典不是设计为在URL中传递的。想想如果你在字典里有大量的项目会发生什么。
您应该为此方法使用POST,原因如下:
首先,它将提供一种在单个对象中指定参数的方法,这可能有其优点。其次,在POST中发送参数会将这些参数放在请求正文中,这样就可以通过HTTPS发送这些参数,无论如何您都应该使用这些参数,因为您正在传递凭据。这些天,没有理由不为所有事情使用HTTPS。
将参数作为POST发送真的是一个微不足道的变化。
希望有所帮助。