MarkLogic REST PUT添加文档会返回500内部服务器错误

时间:2018-08-03 05:07:42

标签: marklogic marklogic-9

在将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;
    }

2 个答案:

答案 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内的某些文本中有一个单引号。真讨厌找这个