我正在尝试从Web API发布一个JsonObject使用HttpClient.我不太确定如何解决这个问题,并且在示例代码方面找不到多少内容.
这是我到目前为止所拥有的:
var myObject = (dynamic)new JsonObject();
myObject.Data = "some data";
myObject.Data2 = "some more data";
HttpClient httpClient = new HttpClient("myurl");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.Post("", ???);
Run Code Online (Sandbox Code Playgroud)
我想我需要把我JsonObject当成一个StreamContent但是我已经挂了这一步.
我正在尝试使用HttpContent:
HttpContent myContent = HttpContent.Create(SOME_JSON);
Run Code Online (Sandbox Code Playgroud)
...但我没有运气找到定义它的DLL.
首先,我尝试添加引用Microsoft.Http以及System.Net,但是列表中都没有.我也尝试添加一个引用,System.Net.Http但HttpContent该类不可用.
那么,谁能告诉我在哪里可以找到这门HttpContent课程?
我试图调用的API要求我执行POST但空体.我是新手使用WCF Web API HttpClient,我似乎无法找到可以用空体做帖子的写代码.我找到了一些HttpContent.CreateEmpty()方法的引用,但我认为这不是Web API HttpClient代码,因为我似乎无法找到该方法.
TL; DR - 如何使用auth标头将JSON字符串发送到REST主机?我尝试了3种不同的方法,其中一种方法适用于匿名类型.为什么我不能使用匿名类型?我需要设置一个名为"Group-Name"的变量,连字符不是有效的C#标识符.
背景
我需要POST JSON但无法获取正文和内容类型
功能#1 - 使用匿名类型
内容类型和数据是正确的,但我不想使用匿名类型.我想用一个字符串
static void PostData(string restURLBase, string RESTUrl, string AuthToken, string postBody)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(restURLBase);
client.DefaultRequestHeaders.Add("Auth-Token", AuthToken);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// StringContent content = new StringContent(postBody);
var test1 = "data1";
var test2 = "data2";
var test3 = "data3";
var response = client.PostAsJsonAsync(RESTUrl, new { test1, test2, test3}).Result; // Blocking call!
if (!response.IsSuccessStatusCode)
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
return;
}
}
Run Code Online (Sandbox Code Playgroud)
输出#1
使用AnonymousTypes + PostAsJsonAsync时,内容类型和数据是正确的,但我不想使用匿名类型.
POST …Run Code Online (Sandbox Code Playgroud) 我需要在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) c# ×5
asp.net ×2
wcf-web-api ×2
.net ×1
api ×1
dll ×1
httpclient ×1
httpcontent ×1
json ×1
rest ×1
wcf ×1