5

Windowsのコマンドラインからコマンドを実行しようとしていますcurlが、私が生きている間、どのようにコマンドをエスケープするのか理解できません。

私はこれを実行しています:

C:\WINDOWS\system32>curl --anyauth --user user:password -X POST -d "{\"rest-api\":{\"name\":\"BizSimDebug3\"}}" -H "Content-type: application/xml" http://localhost:8002/v1/rest-apis

そして私はこれを手に入れています:

<rapi:error xmlns:rapi="http://marklogic.com/rest-api">
  <rapi:status-code>400</rapi:status-code>
  <rapi:status>Bad Request</rapi:status>
  <rapi:message-code>RESTAPI-INVALIDCONTENT</rapi:message-code>
  <rapi:message>Your bootstrap payload caused the server to throw an error.  Underlying error message: XDMP-DOCROOTTEXT: xdmp:get-request-body() -- Invalid root text "{&amp;quot;rest-api&amp;quot;:{&amp;quot;name&amp;quot;:&amp;quot;BizSimDebug3&amp;quot;}}" at  line 1</rapi:message>
</rapi:error>

-dフラグの内側の引用符をエスケープするために他に何かする必要がありますか?それとも私は本当の問題を完全に見落としていますか?

4

3 に答える 3

9

これはWindowsで機能します。

 
curl -i -X POST -H "Content-Type: application/json" -d "{\"Field1\": 123, \"Field2\": 456 }" "http://localhost:8080"
 
于 2014-03-12T20:35:54.907 に答える
2

このXDMP-DOCROOTTEXTエラーは、サーバーがペイロードを解析しようとしてXML失敗していることを示しています。

ヘッダーはContent-Type送信していることをサーバーに通知していますXMLが、ペイロードはJSONです。

Content-Typeヘッダーを次のように変更してみてくださいapplication/json

于 2013-02-20T14:00:17.973 に答える
0

引用は地獄です。「Windowsコマンドラインとプロンプト」とは、cmd.comを意味していると思いますか?それはLinuxシェルと同じことを引用していません。

この単純な実験では、エスケープを避けるために2種類の引用符を使用することをお勧めしますが、それでも機能する可能性は低いです。

curl --anyauth --user user:password -X POST -d "{'rest-api':{'name':'BizSimDebug3'}}" -H "Content-type: application/xml" http://localhost:8002/v1/rest-apis

Linuxのようにエスケープするcygwin( http://www.cygwin.com/)やxmlsh(www.xmlsh.org)を実行するなど、UNIXライクなシェルを使用することで運が良くなる可能性があります。

あなたは本当に、Windowsのコマンドラインを介して複雑なものをネイティブに実行するという悪夢を抱えることになります。

-デビッド

于 2013-02-19T21:54:03.770 に答える