2012-10-17 22 views
38

Dịch vụ web tôi cần tương tác (thường là thủ công để kiểm tra) yêu cầu tiêu đề HTTP bổ sung trên các yêu cầu nhất định. Kiểm tra thủ công nhanh chóng hoạt động khá tuyệt với PowerShell's New-WebServiceProxy nhưng cho đến nay tôi vẫn chưa tìm thấy tùy chọn để thêm tiêu đề HTTP khác vào yêu cầu.Có thể gửi các tiêu đề HTTP bổ sung cho các dịch vụ web qua New-WebServiceProxy

Có điều gì đó không?

Trả lời

14

Bạn có thể sử dụng ứng dụng web của .NET từ PowerShell.

> $webClient = New-Object System.Net.WebClient 
> $webClient.Headers.add('accept','application/json') 
> $webClient.DownloadString('http://yourURLhere') 
+0

Đó là một * nhiều * phức tạp hơn là chỉ nhận được một đối tượng proxy với tất cả các phương pháp và loại thích hợp. Nếu tôi chỉ cần gõ mọi thứ bằng tay bao gồm JSON/XML thì tôi có thể sử dụng Fiddler và được thực hiện với nó – Joey

+0

Bạn luôn có thể sao chép yêu cầu Fiddler vào một tệp văn bản và đọc từ PowerShell để tự động tạo tiêu đề, tùy theo tiếp cận bạn đi với. –

+1

Đây là câu trả lời cho PS3 và dưới đây. – davidhigh

60
Invoke-WebRequest http://yourURLhere -Headers @{"accept"="application/json"} 

Được giới thiệu vào POSH 3.0

+2

Tôi gặp lỗi vì 'Accept' là tên tiêu đề dành riêng. Tôi đã sử dụng WebClient. – Aaron

+7

Tính năng này hoạt động trong PowerShell, nhưng chỉ v4 và mới hơn. Trong v3, nó ném một ngoại lệ. –

0

Tôi ngạc nhiên này đã không đưa ra:

$uri = 'http://...' 

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 
$headers.Add('Accept','Application/Json') 
$headers.Add('X-My-Header','...') 

$result = Invoke-WebRequest -Uri $uri -Headers $headers 

Để hoàn chỉnh, một tham chiếu đến thuộc tính tiêu đề:

https://msdn.microsoft.com/en-us/library/s4ys34ea(v=vs.110).aspx

+0

Vâng, đó là sử dụng một phương pháp hoàn toàn khác để truy cập dịch vụ web. Tất nhiên, đó là một lựa chọn, nhưng đó không phải là câu hỏi. – Joey

Các vấn đề liên quan