Код: Выделить всё
public string GetDocumentParameters(string documentId)
{
return _client.GetStringAsync($"{ServiceParameters.BaseUrl}/raylight/v1/documents/{documentId}/parameters").GetAwaiter().GetResult();
}
Когда пользователь заполняет эти параметры на экране, я назначаю введенные пользователем данные классу с именем RootObject затем я хочу создавать отчеты в соответствии с параметрами, которые он заполняет. Поэтому для этой цели я использую код ниже;
Код: Выделить всё
public DocumentResult GetDocument(string documentId, RootObject rootObject)
{
UpdateDocumentParameters(documentId, rootObject);
var documentResult = FetchDocumentContent(documentId);
return documentResult;
}
private void UpdateDocumentParameters(string documentId, RootObject rootObject)
{
var json = JsonConvert.SerializeObject(rootObject, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Formatting = Newtonsoft.Json.Formatting.Indented
});
var content = new StringContent(json, Encoding.UTF8, "application/json");
var requestUri = $"{ServiceParameters.BaseUrl}/raylight/v1/documents/{documentId}/parameters";
var response = _client.PutAsync(requestUri, content).GetAwaiter().GetResult();
response.EnsureSuccessStatusCode();
}
private DocumentResult FetchDocumentContent(string documentId)
{
var requestUri = $"{ServiceParameters.BaseUrl}/raylight/v1/documents/{documentId}/reports";
var documentReports = GetDocumentReports(requestUri);
var reports = ParseReports(documentReports);
var reportContents = new Dictionary();
foreach (var reportId in reports.Select(r => r.Id))
{
var reportUrl = $"{requestUri}/{reportId}";
var reportContentDoc = GetReport(reportUrl);
reportContents[reportId] = reportContentDoc;
}
return new DocumentResult
{
ReportContents = reportContents,
Reports = reports
};
}
private XDocument GetDocumentReports(string url)
{
var response = _client.GetStringAsync(url).GetAwaiter().GetResult();
return XDocument.Parse(response);
}
private List ParseReports(XDocument document)
{
return document.Descendants("report")
.Select(ParseReportDetail)
.ToList();
}
private ReportDetail ParseReportDetail(XElement reportElement)
{
return new ReportDetail
{
Id = int.Parse(reportElement.Element("id").Value),
Name = reportElement.Element("name").Value,
Content = reportElement.Element("reference").Value
};
}
private string GetReport(string url)
{
return _client.GetStringAsync(url).GetAwaiter().GetResult();
}
Как я могу это исправить? проблема?
Подробнее здесь: https://stackoverflow.com/questions/788 ... -rest-apis
Мобильная версия