Полное руководство по выполнению запросов SOAP с помощью cURL в PowerShell

В этой статье мы рассмотрим различные методы выполнения запросов 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. У каждого метода есть свои преимущества, поэтому выберите тот, который лучше всего соответствует вашим требованиям.