C# 使用HttpClient发布JSON数据
我正在尝试以编程方式在VisualStudioTeamServices(以前是VisualStudioOnline)中创建服务挂钩订阅。在团队服务中创建项目时,将自动创建服务挂钩。以下是我的“workitem created”web钩子代码:C# 使用HttpClient发布JSON数据,c#,json,httpclient,azure-devops,C#,Json,Httpclient,Azure Devops,我正在尝试以编程方式在VisualStudioTeamServices(以前是VisualStudioOnline)中创建服务挂钩订阅。在团队服务中创建项目时,将自动创建服务挂钩。以下是我的“workitem created”web钩子代码: using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", username, password))));
var request = new
{
publisherId = "tfs",
eventType= " workitem.created",
resourceVersion= "1.0",
consumerId= "webHooks",
consumerActionId= "httpRequest",
publisherInputs= new {
projectId= "test123",
},
consumerInputs= new {
url = "https://mydomain/api/ServiceHook/SaveWorkItem"
}
};
var response = client.PostAsync("https://mydomain/DefaultCollection/_apis/hooks/subscriptions",
new StringContent(JsonConvert.SerializeObject(request).ToString(),
Encoding.UTF8, "application/json"))
.Result;
if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(
response.Content.ReadAsStringAsync()
.Result);
// Access variables from the returned JSON object
var appHref = content.links.applications.href;
}
}
运行此代码时,我遇到以下错误:解析值时遇到意外字符:请尝试下面的代码-
var dataObjects = response1.Content.ReadAsStringAsync().Result;
var rootObj = JsonConvert.DeserializeObject<RootObject>(dataObjects);
var dataObjects=response1.Content.ReadAsStringAsync().Result;
var rootObj=JsonConvert.DeserializeObject(数据对象);
其中RootObject是响应对象。发布stacktrace…在此处验证您的Json结构:您在哪一行收到错误?同样的问题:您在哪一行收到错误?我复制了你的代码并用它做了一个快速测试。可以成功创建webhook。唯一的问题是“var appHref=content.links.applications.href;”,因为“links.applications.href”在响应消息中不存在。很抱歉回复太晚。。我得到了错误@DeserializengRotoObject是您的响应类。这是基于响应json格式创建的。您可以使用此链接-。
var dataObjects = response1.Content.ReadAsStringAsync().Result;
var rootObj = JsonConvert.DeserializeObject<RootObject>(dataObjects);