【发布时间】:2015-12-28 09:53:17
【问题描述】:
如何使用 REST api 向 Content Server 10.5 添加新文档?
我正在关注Swagger docs 创建节点,但不清楚我如何将文件附加到请求中。这是(大致)我正在使用的代码:
var folderId = 2000;
var docName = "test";
var uri = $"http://[serverName]/otcs/llisapi.dll/api/v1/nodes?type=144&parent_id={folderId}&name={docName}";
var request = new HttpRequestMessage();
request.Headers.Add("Connection", new[] { "Keep-Alive" });
request.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate");
request.Headers.Add("Pragma", "no-cache");
request.Headers.Add("OTCSTicket", /* ticket here */);
request.RequestUri = new Uri(uri);
request.Method = HttpMethod.Post;
request.Content = new ByteArrayContent(data);
request.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping(filePath));
request.Headers.ExpectContinue = false;
var httpClientHandler = new HttpClientHandler
{
Proxy = WebRequest.GetSystemWebProxy(),
UseProxy = true,
AllowAutoRedirect = true
};
using (var client = new HttpClient(httpClientHandler))
{
var response = client.SendAsync(request).Result;
IEnumerable<string> temp;
var vals = response.Headers.TryGetValues("OTCSTicket", out temp) ? temp : new List<string>();
if (vals.Any())
{
this.ticket = vals.First();
}
return response.Content.ReadAsStringAsync().Result;
}
我一直在搜索developer.opentext.com 论坛,但在 c# 中找到一个完整的示例证明是困难的 - 在 javascript 中有一些示例,但尝试在 c# 中或通过 chrome 或 firefox 扩展复制这些示例只需给出相同的结果。到目前为止,调用其他 CS REST 方法还不是问题,这是第一个给我带来问题的方法。
编辑:我将错误的网址粘贴到我的问题中,现在我已经修复了。是var uri = $"http://[serverName]/otcs/llisapi.dll/api/v1/forms/nodes/create?type=0&parent_id={folderId}&name={docName}";。
【问题讨论】:
-
我根据 Steffen 的问题更新了网址,但仍然收到 400 个错误请求错误。有没有我可以检查的日志,看看可能出了什么问题。我还看到了一些关于 CS UI 小部件的信息 - 它们在哪里以及它们有什么帮助?
-
我只是在重新阅读您的问题。我注意到您已将参数打包到 url 中。但是你想执行 POST,因此所有这些参数都必须进入正文。