我尝试了几种不同的方法我无法获得 pipelineId 发布(接收 400),请参见下面的代码:
{
client.BaseAddress = new Uri(_serviceConfig.DataGapsBaseUrl);
var request = new HttpRequestMessage(HttpMethod.Post, "/piper/jobs");
var jsonContent = new StringContent(JsonConvert.SerializeObject(new
{
pipelineId = _serviceConfig.DataPipelineId
}), Encoding.UTF8, "application/json");
request.Content = jsonContent;
var token = await GetToken();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.ToString());
var result = await client.SendAsync(request);
var json = JsonConvert.DeserializeObject<JToken>(result.Content.ReadAsStringAsync().Result);
var jobId = json["id"].ToString();
return jobId;
}
}
当我使用与上述相同的 Postman 操作时,我得到 200 个状态和结果:
因为你使用的是 async await ,所以在任何地方都使用它,而且这种语法更常见
using HttpClient client = new HttpClient { BaseAddress = new Uri(baseUri) };
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.ToString());
var jsonContent = new StringContent(JsonConvert.SerializeObject(new
{
pipelineId = _serviceConfig.DataPipelineId
}), Encoding.UTF8, "application/json");
var response = await client.PostAsync(uri, jsonContent);
var json = await response.Content.ReadAsStringAsync();
var jObj = JObject.Parse(json);
var createTime = (string) jObj["createTime"]; //I can't see Id in Postman
初学者:
var jsonContent = new StringContent(JsonConvert.SerializeObject(new
{
pipelineId = _serviceConfig.DataPipelineId
}), Encoding.UTF8, "application/json");
同时使用 await 更改以下内容以防止线程锁定
var json = JsonConvert.DeserializeObject<JToken>(await result.Content.ReadAsStringAsync());
请注意,如果您的客户端是单例并且您正在从异步上下文设置身份验证,则它可能会被另一个调用覆盖,要么重新创建客户端,要么可能在 HttpRequestMessage 上设置授权:
var request = new HttpRequestMessage(HttpMethod.Post, "/piper/jobs");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.ToString()
对不起伙计们,我的错我需要发送这个:
{“pipelineId”:“zxxzxzxzxz18”,“输入”:{“Batch_Id”:9999}}
需要弄清楚如何使用双引号并解决问题。