Gọi-WebRequest, POST với các tham số


197

Tôi đang cố gắng POST cho một uri và gửi tham số username=me

Invoke-WebRequest -Uri http://example.com/foobar -Method POST

Làm thế nào để tôi vượt qua các tham số bằng cách sử dụng phương thức POST?


2
Xem câu trả lời này cho một câu hỏi tương tự.
Ansgar Wiechers

Câu trả lời:


300

Đặt tham số của bạn vào bảng băm và chuyển chúng như thế này:

$postParams = @{username='me';moredata='qwerty'}
Invoke-WebRequest -Uri http://example.com/foobar -Method POST -Body $postParams

8
Để tham khảo trong tương lai của tôi nhiều như thông tin của bất kỳ ai khác, bảng băm cũng có thể được chuyển qua, kiểu một lớp, trực tiếp đến tham số -Body.
cori

2
thêm $ ProgressPreference = 'SilentlyContinue' để tăng tốc mọi thứ theo hệ số 10.
andrej

93

Đối với một số dịch vụ web kén chọn, yêu cầu cần phải đặt loại nội dung thành JSON và phần thân là một chuỗi JSON. Ví dụ:

Invoke-WebRequest -UseBasicParsing http://example.com/service -ContentType "application/json" -Method POST -Body "{ 'ItemID':3661515, 'Name':'test'}"

hoặc tương đương với XML, v.v.


15

Điều này chỉ hoạt động:

$body = @{
 "UserSessionId"="12345678"
 "OptionalEmail"="MyEmail@gmail.com"
} | ConvertTo-Json

$header = @{
 "Accept"="application/json"
 "connectapitoken"="97fe6ab5b1a640909551e36a071ce9ed"
 "Content-Type"="application/json"
} 

Invoke-RestMethod -Uri "http://MyServer/WSVistaWebClient/RESTService.svc/member/search" -Method 'Post' -Body $body -Headers $header | ConvertTo-HTML

3

Lệnh đơn không có biến ps khi sử dụng JSONlàm phần thân {lastName:"doe"}cho lệnh gọi api POST:

Invoke-WebRequest -Headers @{"Authorization" = "Bearer N-1234ulmMGhsDsCAEAzmo1tChSsq323sIkk4Zq9"} `
                  -Method POST `
                  -Body (@{"lastName"="doe";}|ConvertTo-Json) `
                  -Uri https://api.dummy.com/getUsers `
                  -ContentType application/json
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.