public async Task <IResultModel> EditHttpJob(Guid id) { var entity = await _repository.GetAsync(id); if (entity == null) { return(ResultModel.Failed()); } var model = _mapper.Map <JobHttpUpdateModel>(entity); model.EndDate = entity.EndDate.AddDays(-1); var jobHttp = await _jobHttpRepository.GetByJob(id); model.Url = jobHttp.Url; model.AuthType = jobHttp.AuthType; model.ContentType = jobHttp.ContentType; model.Method = jobHttp.Method; model.Parameters = jobHttp.Parameters; model.Token = jobHttp.Token; if (jobHttp.Headers.NotNull()) { model.HeaderList = JsonSerializer.Deserialize <List <KeyValuePair <string, string> > >(jobHttp.Headers); } return(ResultModel.Success(model)); }
public override async Task Execute(ITaskExecutionContext context) { var idData = context.JobExecutionContext.JobDetail.JobDataMap["id"]; if (idData == null) { await Logger.Error("任务编号不存在"); return; } var id = Guid.Parse(idData.ToString()); if (id == Guid.Empty) { await Logger.Error("任务编号不存在"); return; } var job = await _repository.GetAsync(id); if (job == null) { await Logger.Error("任务不存在"); return; } if (job.JobType != JobType.Http) { await Logger.Error("不是Http类型的Job"); return; } var jobHttp = await _httpRepository.GetByJob(id); if (jobHttp == null) { await Logger.Error("不是Http类型的Job"); return; } if (jobHttp.Url.IsNull()) { await Logger.Error("URL为空"); return; } var client = _clientFactory.CreateClient(); //设置请求头 if (jobHttp.Headers.NotNull()) { var headers = JsonSerializer.Deserialize <List <KeyValuePair <string, string> > >(jobHttp.Headers); if (headers.Any()) { foreach (var header in headers) { client.DefaultRequestHeaders.Add(header.Key, header.Value); } } } //设置认证方式 if (jobHttp.AuthType == AuthType.Jwt) { if (jobHttp.Token.IsNull()) { await Logger.Error("令牌为空"); return; } //jwt client.DefaultRequestHeaders.Add("Authorization", "Bearer " + jobHttp.Token); } HttpResponseMessage responseMessage; //GET请求 if (jobHttp.Method == HttpMethod.GET) { responseMessage = await client.GetAsync(jobHttp.Url); } //DELETE删除 else if (jobHttp.Method == HttpMethod.DELETE) { responseMessage = await client.DeleteAsync(jobHttp.Url); } //Post和Put请求 else { //设置参数 var content = new StringContent(jobHttp.Parameters); content.Headers.ContentType = new MediaTypeHeaderValue(jobHttp.ContentType.ToDescription()); responseMessage = jobHttp.Method == HttpMethod.POST ? await client.PostAsync(jobHttp.Url, content) : await client.PutAsync(jobHttp.Url, content); } await Logger.Info(await responseMessage.Content.ReadAsStringAsync()); }