В этой статье мы рассмотрим различные методы выполнения запросов SOAP с использованием cURL в PowerShell. Мы предоставим примеры кода для каждого метода, чтобы у вас были все инструменты, необходимые для успешного взаимодействия с веб-службами на основе SOAP.
Метод 1: Invoke-WebRequest
Командлет Invoke-WebRequest в PowerShell позволяет нам отправлять HTTP-запросы, включая запросы SOAP. Вот пример того, как его можно использовать для отправки запроса SOAP:
$url = "http://example.com/soap-endpoint"
$headers = @{
"Content-Type" = "text/xml"
}
$body = @"
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:example="http://example.com">
<soap:Header/>
<soap:Body>
<example:YourSOAPRequest>
<!-- Your SOAP request payload goes here -->
</example:YourSOAPRequest>
</soap:Body>
</soap:Envelope>
"@
$response = Invoke-WebRequest -Uri $url -Method Post -Headers $headers -Body $body
Метод 2: cURL с помощью PowerShell Start-Process
Если вы предпочитаете использовать cURL напрямую, вы можете вызвать его из PowerShell с помощью командлета Start-Process. Вот пример:
$url = "http://example.com/soap-endpoint"
$headers = @{"Content-Type" = "text/xml"}
$body = @"
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:example="http://example.com">
<soap:Header/>
<soap:Body>
<example:YourSOAPRequest>
<!-- Your SOAP request payload goes here -->
</example:YourSOAPRequest>
</soap:Body>
</soap:Envelope>
"@
$curlCommand = "curl.exe -X POST -H `"$($headers.GetEnumerator() -join ';')`" -d `"$body`" $url"
Start-Process -FilePath powershell.exe -ArgumentList "-Command", $curlCommand -NoNewWindow -Wait
Метод 3: Invoke-RestMethod с cURL
Другой вариант — использовать Invoke-RestMethod, который также поддерживает выполнение запросов SOAP. Вы можете использовать cURL в Invoke-RestMethod, указав параметр -UseBasicParsing
. Вот пример:
$url = "http://example.com/soap-endpoint"
$headers = @{"Content-Type" = "text/xml"}
$body = @"
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:example="http://example.com">
<soap:Header/>
<soap:Body>
<example:YourSOAPRequest>
<!-- Your SOAP request payload goes here -->
</example:YourSOAPRequest>
</soap:Body>
</soap:Envelope>
"@
$response = Invoke-RestMethod -Uri $url -Method Post -Headers $headers -Body $body -UseBasicParsing
В этой статье мы рассмотрели три различных метода выполнения запросов SOAP с помощью cURL в PowerShell. Вы можете использовать командлет Invoke-WebRequest, вызвать cURL с помощью Start-Process или использовать Invoke-RestMethod с cURL. У каждого метода есть свои преимущества, поэтому выберите тот, который лучше всего соответствует вашим требованиям.