1

我正在使用 REST APi 从我的 Windows 机器将文档摄取到 marklogic 到Test我已经创建的数据库中。

F:\Curl>curl --anyauth --user admin:admin -X PUT -d@"F:/REST/file.xml" -i -H "Content-type: application/xml" http://localhost:8000/Test/documents?uri=/xml/F:/REST/file.xml

但我收到这样的错误:

HTTP/1.1 401 Unauthorized
Server: MarkLogic
WWW-Authenticate: Digest realm="public", qop="auth", nonce="317cc2c17ace5b3680ddb90df7d7e4d9", opaque="871eddaeecdf779c"
Content-Type: text/html; charset=utf-8
Content-Length: 209
Connection: Keep-Alive
Keep-Alive: timeout=5

HTTP/1.1 404 Not Found
Content-type: text/html; charset=UTF-8
Server: MarkLogic
Content-Length: 5763
Connection: Keep-Alive
Keep-Alive: timeout=5

<!DOCTYPE html>
<html xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xs="http://www.w3.org/2001/XMLSchema"><head><title>Error ΓÇó MarkLogic Application Services</title><meta http-equiv="X-UA-Compatible" content="IE=8"/><!-- XSLTForm dependency --><link href="/common/static/css/environment-ui.css?9.0-2" media="screen" rel="stylesheet" type="text/css"/><link href="/common/static/css/universal-header.css?9.0-2" media="screen" rel="stylesheet" type="text/css"/><script src="/common/static/js/universal-header.js?9.0-2" type="text/javascript"> </script><script>var ML = ML || {};  ML.environmentUI = {};</script><script src="/common/static/js/environment-ui.js?9.0-2" type="text/javascript"> </script><link rel="stylesheet" type="text/css" href="/common/static/css/base.css"/><link rel="stylesheet" type="text/css" href="/common/static/css/master.css"/><link rel="stylesheet" type="text/css" href="/common/yui-2.8/menu/assets/skins/sam/menu.css"

我的 curl 语法有什么问题吗?

更新卷曲命令:

F:\Curl>curl --digest --user admin:admin -X PUT -d@"F:/REST/rest.xml" -i -H "Content-type: application/xml" "http://localhost:8000/v1/documents?uri=/rest/file.xml" 
4

1 回答 1

3

您正在使用带有 Curl 的 anyAuth 选项。这会尝试一种身份验证方法(基本),然后如果前一种方法失败(依此类推),则再次重试(摘要)。我讨厌使用 anyAuth 的样本,因为人们对结果感到困惑。最好知道服务器期望什么并使用特定的身份验证方法。

仔细看你的帖子。。

第一个响应是 Ún-authorized

然后 cUrl 重试并收到 404 - 未找到。- 并且正文响应实际上是一个网页..

所以,问题根本不是身份验证..

URL ' http://localhost:8000/Test/documents?uri=/xml/F:/REST/file.xml ' 似乎根本不存在。我从未听说过 AppServices (8000) 服务器上的端点调用 Test/documents。

此外,为了增加安全性,我建议将您的 URL 用双引号括起来,以保护任何可能在命令行上被破坏的特殊字符。

于 2017-10-14T18:13:29.020 回答