接收自定义对象作为web api请求的一部分

时间:2014-11-10 13:00:32

标签: c# .net asp.net-web-api

我通过网络API公开了一些数据。客户端是以下列方式使用此服务的wpf应用程序

 HttpClient client = new HttpClient();
 client.BaseAddress = new Uri("http://localhost:11992/");

 client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));

 var url = "api/Data/;
 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
           "Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(
                string.Format("{0}:{1}", "myusername", "mypassword"))));                

HttpResponseMessage response = client.GetAsync(url).Result;

on web api side code

 // GET: api/Data
 public IEnumerable<MyObject> Get()
 {
     return GetData().AsEnumerable();
 }

我的问题是:

是否可以接收自定义对象作为web api请求的一部分,以便我可以确定哪个计算机的用户名访问webservice?

1 个答案:

答案 0 :(得分:0)

简而言之。

创建数据合同

[DataContract]
public class MyRequest
{
    [DataMember]
    public string myString { get; set; }
    [DataMember]
    public IEnumerable<string> myList { get; set; }
}

您甚至可以在输入和输出中使用列表。 如果您使用WebInvoke属性,则可以使用JSON消费它。

[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
IEnumerable<MyResponse> MyGet(MyRequest request);

通过这种方式,您可以使用JSON对象发布帖子并且它可以正常工作,只需注意放置正确的内容类型application/json并使用方法POST