dze*_*siz 1 c# asp.net-mvc http-get httpwebrequest http-headers
我正在尝试从 Windows 服务调用 API。API 是用 ASP MVC 编写的。到目前为止,我正在创建如下请求:
private List<T> GetCollectionFromApi<T>(string url)
{
List<T> result = new List<T>();
try
{
var request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
using (var response = (HttpWebResponse) request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var sr = new StreamReader(stream))
{
result.AddRange(JsonConvert.DeserializeObject<List<T>>(sr.ReadToEnd()));
}
}
}
}
catch (Exception e)
{
// handle err
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但现在我需要通过 GET 请求传递一个参数。该参数是一个对象,而不是原始类型。
我是否在查询字符串中逐个属性地解构它?或者我是否以某种方式将其添加到请求标头?我确实计划依赖API 控制器中的DefaultModelBinder 。任何计划将不胜感激。
API端:
您需要[FromUri]在 API 操作中使用属性。
有关参数绑定的更多信息,请查看此链接。
public class SomeData
{
public int Start { get; set; }
public int End { get; set; }
}
public SomeController : ApiController
{
public HttpResponseMessage Get([FromUri] SomeData data) { ... }
}
Run Code Online (Sandbox Code Playgroud)
客户端
您需要像往常一样在查询中发送参数。
http://localhost/api/Some?Start=0&End=10
Run Code Online (Sandbox Code Playgroud)
另外,还有一个更有趣的详细信息链接,请参见此处。