Windows 10下使用cUrl向Solr集合发送JSON数据的问题
解决Windows 10下cUrl向Solr发送JSON的报错问题
你遇到的核心问题是Windows命令提示符(CMD)对引号的处理逻辑和类Unix终端不一样,再加上一个小拼写错误,才导致了报错。咱们一步步拆解解决:
错误原因分析
你第二次用的命令里用了单引号'包裹URL和数据,但Windows CMD并不支持用单引号作为字符串的分隔符——它会把单引号当成内容的一部分。所以curl看到的URL是'http://localhost:8983/solr/sorl_sample/update/json/docs',开头的'被当成了协议的一部分,自然就报了Protocol "'http" not supported的错误。另外你还把集合名solr_sample写成了sorl_sample,这个拼写错误也得修正,不然即使引号对了也会找不到目标集合。
正确的命令写法(CMD环境)
在CMD里,必须用双引号"包裹字符串,而JSON内部的双引号需要用反斜杠\转义,正确命令如下:
curl -X POST -H "Content-Type:application/json" "http://localhost:8983/solr/solr_sample/update/json/docs" --data-binary "{\"id\": \"1\",\"title\":\"Doc 1\"}"
更友好的PowerShell方案
如果你的系统里可以用PowerShell,处理JSON会更方便,不需要转义内部双引号,直接用Here-String来定义JSON内容:
# 定义要发送的JSON文档内容 $docContent = @" {"id": "1","title":"Doc 1"} "@ # 发送POST请求到Solr curl -X POST -H "Content-Type:application/json" "http://localhost:8983/solr/solr_sample/update/json/docs" --data-binary $docContent
额外提示
发送完更新请求后,记得加上commit命令让Solr立即生效:
curl "http://localhost:8983/solr/solr_sample/update?commit=true"
内容的提问来源于stack exchange,提问作者Denis L.
相关产品推荐
相关产品推荐

