2013-02-19 3 views
3

Я пытаюсь запустить команду curl из командной строки в Windows, но для жизни я не могу понять, как я должен ее избегать.Команда Escaping curl в Windows

Я выполнение этого:

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? Или я полностью игнорирую реальную проблему?

ответ

2

Ошибка XDMP-DOCROOTTEXT указывает, что сервер пытается анализировать полезную нагрузку XML и терпит неудачу.

Глава Content-Type сообщает серверу, что вы отправляете XML, но полезная нагрузка - JSON.

Попробуйте изменить заголовок Content-Type к application/json

+0

* фирменный знак * Ayup. Я подозревал, что могу сделать что-то глупое. Это действительно проблема. Спасибо! – BlairHippo

0

Цитата - это ад. «Командная строка Windows и ваше приглашение я предполагаю, что вы имеете в виду cmd.com?». То, что делает цитату так же, как linux shells.

Для этого упрощенного эксперимента я рекомендую использовать 2 вида котировок, чтобы избежать выхода. Но даже тогда его маловероятный работать

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

Лучше удачи может быть у идя с Unix-подобной оболочки, такие как бег Cygwin (http://www.cygwin.com/) или, возможно, xmlsh (www.xmlsh.org), которые ускользают, как Linux делает.

Вы действительно, у кошмара будет что-то сложное через командную строку Windows изначально.

-Давид

+0

Спасибо, Дэвид. Я запускаю cmd.exe. Внешне-двойной внутренний-единственный подход не сработал. Я стараюсь избегать этого с Cygwin и держать это просто, если это возможно, но у меня заканчивается терпение. На самом деле раздражающая часть - я хорошо знаю, что я понял, как это сделать один раз, но я не могу вспомнить, КАК ... – BlairHippo

+0

Возможно, попробуйте упомянуть здесь. Возможно, попробуйте http://stackoverflow.com/questions/2835039/graphical -http-client-for-windows –

4

Это работает в Windows:


curl -i -X POST -H "Content-Type: application/json" -d "{\"Field1\": 123, \"Field2\": 456 }" "http://localhost:8080"