在将XML文档插入MarkLogic(HTTP REST PUT)时,有人遇到500内部服务器错误
代码:
static public bool InsertXmlDocument(string uri, string data, string databaseName = "Documents")
{
if (String.IsNullOrWhiteSpace(uri) || String.IsNullOrWhiteSpace(data))
{
return false;
}
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("admin", "admin");
client.Headers.Add("Content-Type", "application/xml");
client.UploadString(new Uri($"http://localhost:8002/LATEST/documents?database={databaseName}&uri={uri}" ), "PUT", data );
return true;
}
答案 0 :(得分:3)
您不应该使用端口8002。这是用于管理操作的REST Management API端口。对于客户端API,您需要一个REST API实例。一个预装在端口8000上,或者您可以按照此处的说明创建自己的端口:
http://docs.marklogic.com/guide/rest-dev/service#id_12021
此外,如果您使用Java的REST Client API,则可能应该考虑使用Java Client API,它是REST Client API之上的Java层。参见http://docs.marklogic.com/guide/java。
答案 1 :(得分:0)
我查看了服务器ErrorLog.txt,但它没有任何错误信息。该URL有效,因为我可以插入具有不同XML的文档。
事实证明,如果您的XML值中有任何未转义的项目(引号,与号等),那么MarkLogic会给出500个内部服务器错误。
那真的在我的书中很la脚,他们应该返回一个错误,指出无效的XML。
就我而言,我在5000行XML内的某些文本中有一个单引号。真讨厌找这个