Powershell Invoke-WebRequest вызывает ошибку сервера - PullRequest
0 голосов
/ 23 мая 2019

У меня есть xml-файл, и я использую скрипт Powershell для создания запроса мыла, чтобы отправить его на URL.

Проблема, с которой я столкнулся, связана с тем, что в приведенной ниже строке кода создается серверошибка:

[xml]$res = Invoke-WebRequest $uri -Method POST -ContentType "text/soap+xml;charset=windows-1252" -Body $soapReq

Странно то, что когда я открываю свой XML-файл данных в блокноте и сохраняю его (не внося изменений), сценарий Powershell работает и передает файл на целевой URL-адрес.

Я пишу свой XML-файл в кодировке UTF8.

Я прилагаю измененную версию сценария Powershell, которую я использую.

#my db generates this file
$filePath = "C:\MyPath\data.xml"

$result = Get-Content $filePath

#rewrite the file to a specific location and encode it to utf-8
Out-File -FilePath $filePath -InputObject $result -Encoding 'UTF8'

$un = 'un'
$Pw = 'pw'

$xmlData = Get-Content $filePath -Raw
$xmlData = [Security.SecurityElement]::Escape($xmlData)

$soapReq = @"
<?xml version="1.0" encoding="Windows-1252"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="https://url">
<env:Body>
  <ins0:Transfer>
    <sourceIdentifier>123456</sourceIdentifier>
    <userName>$un</userName>
    <password>$pw</password>
    <xmlDataset>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
$xmlData</xmlDataset>
  </ins0:Transfer>
</env:Body>
</env:Envelope>
"@

$uri = "https://url"

[xml]$res = Invoke-WebRequest $uri -Method POST -ContentType "text/soap+xml;charset=windows-1252" -Body $soapReq

Прежде чем исследовать использование VBS для открытияНадеюсь, что кто-нибудь может дать мне совет о том, как заставить этот скрипт Powershell работать должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...