У меня есть 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><?xml version="1.0" encoding="UTF-8"?>
$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 работать должным образом.