2017-02-20 4 views
0
PS C:\> $postParams = @{eventId='235'} 
PS C:\> curl -Method DELETE -Uri http://localhost:8080/eventlist/api/v1/events -Body $postParams 
curl : Error deleting event 
At line:1 char:1 
+ curl -Method DELETE -Uri http://localhost:8080/eventlist/api/v1/events -Body $po ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], Web 
    eption 
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 

Однако, если я пытаюсь удалить какНевозможно обработать HTTP удалить запрос с помощью Powershell локон команды

curl -Method DELETE -Uri http://localhost:8080/eventlist/api/v1/events?eventId=235 

он работает

Почему не работает первым способом с использованием $postParams?

+0

см правильной команда выполняется без промаха среза – Star123

+1

мы можем, пожалуйста, не маркировать их с «свернуться», поскольку они не являются * реальной * командой локона? –

+0

Итак, вы можете сказать, что вы используете псевдоним Powershell «curl», который действительно вызывает командлет Invoke-Webrequest. Это то, что вы намереваетесь? Или вы пытаетесь назвать настоящую кукурузу? – GodEater

ответ

0

EDIT

Это провал, поскольку DELETE не является командой POST.

Код ниже не проверен.

Чтобы воссоздать DELETE в PowerShell, ваш синтаксис должен быть:

$eventId=235 
Invoke-WebRequest -Method DELETE -Uri "http://localhost:8080/eventlist/api/v1/events?eventId=$eventId" 

ОРИГИНАЛЬНЫЙ ПОСТ

Это относится к командной строки приложения завитком, а не PowerShell curl который является Alis для Invoke-WebRequest

Не удается по двум причинам. Первый заключается в том, что DELETE не является командой POST. Во-вторых, вы пытаетесь передать объект PowerShell в приложение командной строки.

Код ниже не проверен.

Чтобы воссоздать DELETE в PowerShell, ваш синтаксис должен быть:

$eventId=235 
&curl -Method DELETE -Uri "http://localhost:8080/eventlist/api/v1/events?eventId=$eventId" 

POST команда может быть, как это (в зависимости от конечной точки):

$eventId=235 
$postParams = "{eventId='$eventId'}" 
&curl -H "Content-Type: application/json" -X POST -d $postParams 'http://localhost:8080/eventlist/api/v1/events' 

Примечание, тело - это строка json, а не объект PowerShell.

+1

В ответ на ваш второй пункт: Нет, он этого не делает - он передает его в плохо выбранный псевдоним Invoke-Webrequest, который должен ожидать иметь дело с объектами powershell. – GodEater

+1

Хорошая точка, @GodEater. Забыл о псевдониме. WIll полностью изменить мой пост и зачеркнуть плохие части! – TechSpud

+0

Никакой зачеркивание в Markdown - не отметили изменение и оригинал – TechSpud

0
This is not working 

    PS C:\Users\> $postParams = "{eventId='$eventId'}" 
    PS C:\Users\> Invoke-WebRequest -Method POST -Uri "http://localhost:8080/eventlist/api/v1/events" -Body $postParams 

Invoke-WebRequest : Error creating event 
At line:1 char:1 
+ Invoke-WebRequest -Method POST -Uri "http://localhost:8080/eventlist/api/v1/even ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc 
    eption 
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 

Это работает

PS C:\> Invoke-WebRequest -Method DELETE -Uri 'http://localhost:8080/eventlist/api/v1/events?eventId=235' 


StatusCode  : 200 
StatusDescription : OK 
Content   : Event deleted successfully 
RawContent  : HTTP/1.1 200 OK 
        Content-Length: 26 
        Content-Type: text/plain;charset=ISO-8859-1 
        Date: Mon, 20 Feb 2017 12:27:46 GMT 
        Server: Apache-Coyote/1.1 

        Event deleted successfully 
Forms    : {} 
Headers   : {[Content-Length, 26], [Content-Type, text/plain;charset=ISO-8859-1], [Date, Mon, 20 Feb 2017 
        12:27:46 GMT], [Server, Apache-Coyote/1.1]} 
Images   : {} 
InputFields  : {} 
Links    : {} 
ParsedHtml  : mshtml.HTMLDocumentClass 
RawContentLength : 26