HttpClient 后异步与自定义 header 和 application/json for body C#
HttpClient postasync with custom header and application/json for body C#
您好,我想 运行 从其 api
推送应用中心。但我不知道如何制作正确的格式。
我想 postasync
从这个 api: https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications
Headers 需要的是:
X-API-Token ="{api 令牌}" 和内容类型="application/json"
对于body(内容)我想放这个:
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
我很难以正确的格式编写 HttpClient。
我试过了,但没有用..
Content = new Content
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
};
using (var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) })
{
var myContent = JsonConvert.SerializeObject(data);
client.DefaultRequestHeaders.Add("X-API-Token", "{my api token}");
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
var builder = new UriBuilder(new Uri("https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications"));
HttpResponseMessage response = await client.PostAsync(builder.Uri, content);
};
但是我知道这段代码:
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
与此不同,转换成json格式:
Content = new Content
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
};
可以帮助我正确的序列化 Json 格式吗?以及 httpclient header 和 body 的正确格式?
我已经找到了很多样本,但仍然不知道我想要的样本。
非常感谢你们的帮助:)
您需要构建类似于您所需的对象的结构 JSON
。
创建 类 如下所示。
public class NotificationContent
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("body")]
public string Body { get; set; }
}
public class PostObject
{
[JsonProperty("notification_content")]
public NotificationContent NotificationContent { get; set; }
}
以上是正确的结构,现在当你调用JsonConvert.SerializeObject
时,你的json将是
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
下面是http调用的代码
using (var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) })
{
PostObject postObject = new PostObject
{
NotificationContent = new NotificationContent
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
}
};
var myContent = JsonConvert.SerializeObject(postObject);
client.DefaultRequestHeaders.Add("X-API-Token", "{my api token}");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var builder = new UriBuilder(new Uri("https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, builder.Uri);
request.Content = new StringContent(myContent, Encoding.UTF8, "application/json");//CONTENT-TYPE header
HttpResponseMessage response = await client.SendAsync(request);
};
您好,我想 运行 从其 api
推送应用中心。但我不知道如何制作正确的格式。
我想 postasync
从这个 api: https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications
Headers 需要的是: X-API-Token ="{api 令牌}" 和内容类型="application/json"
对于body(内容)我想放这个:
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
我很难以正确的格式编写 HttpClient。 我试过了,但没有用..
Content = new Content
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
};
using (var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) })
{
var myContent = JsonConvert.SerializeObject(data);
client.DefaultRequestHeaders.Add("X-API-Token", "{my api token}");
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
var builder = new UriBuilder(new Uri("https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications"));
HttpResponseMessage response = await client.PostAsync(builder.Uri, content);
};
但是我知道这段代码:
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
与此不同,转换成json格式:
Content = new Content
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
};
可以帮助我正确的序列化 Json 格式吗?以及 httpclient header 和 body 的正确格式? 我已经找到了很多样本,但仍然不知道我想要的样本。 非常感谢你们的帮助:)
您需要构建类似于您所需的对象的结构 JSON
。
创建 类 如下所示。
public class NotificationContent
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("body")]
public string Body { get; set; }
}
public class PostObject
{
[JsonProperty("notification_content")]
public NotificationContent NotificationContent { get; set; }
}
以上是正确的结构,现在当你调用JsonConvert.SerializeObject
时,你的json将是
{
"notification_content" : {
"name" : "Campaign Name",
"title" : "Expired Warning",
"body" : "You have items that almost expired"
}
}
下面是http调用的代码
using (var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) })
{
PostObject postObject = new PostObject
{
NotificationContent = new NotificationContent
{
Name = "Campaign Name",
Title = "Expired Warning",
Body = "You have items that almost expired"
}
};
var myContent = JsonConvert.SerializeObject(postObject);
client.DefaultRequestHeaders.Add("X-API-Token", "{my api token}");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var builder = new UriBuilder(new Uri("https://appcenter.ms/api/v0.1/apps/KacangIjo/ShopDiaryApp/push/notifications"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, builder.Uri);
request.Content = new StringContent(myContent, Encoding.UTF8, "application/json");//CONTENT-TYPE header
HttpResponseMessage response = await client.SendAsync(request);
};