curl:(3)URL位置1中不匹配的括号:

Goo*_*uJu 0 windows curl solr

我正在从此处运行Apache Solr教程:

http://lucene.apache.org/solr/guide/7_6/solr-tutorial.html

Solr正在运行,我可以在Web浏览器中运行查询。

教程中提到cURL了我不熟悉的内容。

我已经解压缩CURLC:\Curl和包括卷曲在PATH environment variableC:\Curl\curl-7.63.0-win64-mingw\bin

在Windows命令提示符下运行以下命令时,出现错误。我已经用谷歌搜索并尝试了无济于事的解决方案:

代码如下:

C:\Curl\curl-7.63.0-win64-mingw\bin>curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

curl: (3) unmatched brace in URL position 1:
{name:name,
 ^
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (3) unmatched close brace/bracket in URL position 12:
stored:true}}'
           ^
{
  "responseHeader":{
    "status":400,
    "QTime":1},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"no stream",
    "code":400}}
Run Code Online (Sandbox Code Playgroud)

我尝试添加一个-g来关闭地球。

curl -g -X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema
Run Code Online (Sandbox Code Playgroud)

这产生了几乎相同的错误:

C:\Curl\curl-7.63.0-win64-mingw\bin>curl -g -X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema

curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
curl: (3) URL using bad/illegal format or missing URL
{
  "responseHeader":{
    "status":400,
    "QTime":1},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"no stream",
    "code":400}}
Run Code Online (Sandbox Code Playgroud)

然后,我尝试删除单引号并转义双引号,但随后出现以下错误:

curl -g -X POST -H Content-type:application/json --data-binary {\"add-field\": {\"name\":\"name\", \"type\":\"text_general\", \"multiValued\":false, \"stored\":true}} http://localhost:8983/solr/films/schema
Run Code Online (Sandbox Code Playgroud)

ScopedHandler.nextHandle(ScopedHandler.java:255)\ r \ n \ tat org.eclipse.jetty.server.handler ContextHandler.doHandle(ContextHandler.java:1317)\ r \ n \ tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\ r \ n \ tat org.eclipse.jetty.servlet。 ServletHandler.doScope(Serv letHandler.java:473)\r\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)\ r \ n \ tat org.eclipse.jetty.server .handler.ScopedHandler.nextScope(ScopedHandler.java:201)\ r \ n \ tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)\ r \ n \ tat org.eclipse.jetty .server.handler.ScopedHandler.handle(ScopedHandler.java:144)\ r \ n \ tat org.eclipse.jett y.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)\ r \ n \ tat org。 eclipse.jetty.server.handler.HandlerCollection。runTask(EatWhatYouKill .java:333)\ r \ n \ tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\ r \ n \ tat org.eclipse.jetty.util。 thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\ r \ n \ tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\ r \ n \ tat org。 eclipse.jetty.util.thread.ReservedThreadExecutor $ ReservedThread.run(ReservedThreadExecutor。java:366)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:680)\ r \ n \ tat java。lang.Thread.run(未知来源)\ r \ n“,”代码“:500}} EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\ r \ n \ tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\ r \ n \ tat org.eclipse.jetty。 util.thread.ReservedThreadExecutor $ ReservedThread.run(ReservedThreadExecutor.java:366)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\ r \ n \ tat org。 eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:680)\ r \ n \ tat java。lang.Thread.run(未知来源)\ r \ n“,”代码“:500}} EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\ r \ n \ tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\ r \ n \ tat org.eclipse.jetty。 util.thread.ReservedThreadExecutor $ ReservedThread.run(ReservedThreadExecutor.java:366)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)\ r \ n \ tat org。 eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:680)\ r \ n \ tat java。lang.Thread.run(未知来源)\ r \ n“,”代码“:500}} 762)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:680)\ r \ n \ tat java。lang.Thread.run(未知来源)\ r \ n“,”代码“:500}} 762)\ r \ n \ tat org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:680)\ r \ n \ tat java。lang.Thread.run(未知来源)\ r \ n“,”代码“:500}}

我知道有很多关于此问题的类似问答,但它们并不完全相同,我尝试过的任何解决方案都无法解决我的问题。

Goo*_*uJu 5

我用双引号替换了单引号,并用反斜杠将花括号内的双引号转义了,并且有效。

我从这里出发:

curl --X POST -H 'Content-type:application/json' --data-binary '{"add-field": {"name":"name", "type":"text_general", "multiValued":false, "stored":true}}' http://localhost:8983/solr/films/schema
Run Code Online (Sandbox Code Playgroud)

对此:

curl --X POST -H "Content-type:application/json" --data-binary "{\"add-field\": {\"name\":\"name\", \"type\":\"text_general\", \"multiValued\":false, \"stored\":true}}" http://localhost:8983/solr/films/schema
Run Code Online (Sandbox Code Playgroud)

谢谢大家的集体回答。我敢肯定,将添加JSON到单独的文件中可能会有一些好处,但我想避免创建其他文件。