我通过网络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?
答案 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
。