Как обновить документ с помощью SAP Rest APIS?C#

Место общения программистов C#
Ответить
Anonymous
 Как обновить документ с помощью SAP Rest APIS?

Сообщение Anonymous »

Я использую службы отдыха SAP BO и получаю параметры документа с помощью приведенного ниже кода;

Код: Выделить всё

        public string GetDocumentParameters(string documentId)
{
return _client.GetStringAsync($"{ServiceParameters.BaseUrl}/raylight/v1/documents/{documentId}/parameters").GetAwaiter().GetResult();
}
Затем я анализирую результат и отображаю параметры на странице aspx веб-формы asp.net. Например, приведенный выше код возвращает имя строки, дату и день рождения и т. д., затем я генерирую текстовое поле или средство выбора даты и времени и т. д.
Когда пользователь заполняет эти параметры на экране, я назначаю введенные пользователем данные классу с именем 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();
}
Когда я просматриваю отчеты DocumentResult, эти параметры не влияют. Для образца документа имеется 3 отчета. Я ожидаю, что соответствующие отчеты будут заполнены в соответствии с отправленными мной параметрами, но заполнен только один из трех отчетов, а два других пусты.
Как я могу это исправить? проблема?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -rest-apis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»