Bap*_*ste 6 c# api asp.net-web-api
我需要在C#中进行一些api调用。我正在使用Microsoft的Web API客户端来执行此操作。我成功发出了一些POST请求,但是我不知道如何在请求中添加字段“ Body”。任何的想法 ?这是我的代码:
static HttpClient client = new HttpClient();
public override void AwakeFromNib()
{
base.AwakeFromNib();
notif_button.Activated += (sender, e) => {
};
tips_button.Activated += (sender, e) =>
{
Tip t1 = new Tip(title_tips.StringValue, pic_tips.StringValue, content_tips.StringValue, "TEST");
client.BaseAddress = new Uri("my_url");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
CreateProductAsync(t1).Wait();
};
}
static async Task<Uri> CreateProductAsync(Tip tips)
{
HttpResponseMessage response = await client.PostAsJsonAsync("api/add_tips", tips);
response.EnsureSuccessStatusCode();
return response.Headers.Location;
}
Run Code Online (Sandbox Code Playgroud)
步骤1.选择从HttpContent派生的类型。如果要使用运行时代码编写大量内容,则可以使用StreamContent并在其上打开某种StreamWriter。对于简短内容,请使用StringContent。您还可以派生自己的类来定制内容。
步骤2.将内容传递给HttpClient.PostAsync调用。
这是一个使用StringContent传递一些JSON的示例:
string json = JsonConvert.SerializeObject(someObject);
var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
var httpResponse = await httpClient.PostAsync("http://www.foo.bar", httpContent);
Run Code Online (Sandbox Code Playgroud)
另请参阅如何设置HttpContent?。
多亏了这个和这个,我终于找到了发送带有标题和正文内容的帖子请求的解决方案。这是代码:
var cl = new HttpClient();
cl.BaseAddress = new Uri("< YOUR URL >");
int _TimeoutSec = 90;
cl.Timeout = new TimeSpan(0, 0, _TimeoutSec);
string _ContentType = "application/x-www-form-urlencoded";
cl.DefaultRequestHeaders.Add(key, value);
cl.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_ContentType));
cl.DefaultRequestHeaders.Add("key", "value");
cl.DefaultRequestHeaders.Add("key", "value");
var _UserAgent = "d-fens HttpClient";
cl.DefaultRequestHeaders.Add("User-Agent", _UserAgent);
var nvc = new List<KeyValuePair<string, string>>();
nvc.Add(new KeyValuePair<string, string>("key of content", "value"));
var req = new HttpRequestMessage(HttpMethod.Post, "http://www.t-lab.fr:3000/add_tips") { Content = new FormUrlEncodedContent(nvc) };
var res = cl.SendAsync(req);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15823 次 |
| 最近记录: |