Problem Base64 Codierung
Moin zusammen,
ich habe mal eine naive Frage, nachdem Google mir leider nur für mich interessante Artikel zum Thema PS-Script Codierung vorschlägt, die nicht für mich interessant sind. Ich habe in der Vergangenheit ein PS Script erstellt mit dem ich Adressdaten in eine txt schreibe um diese automatisch ans ERP zu übergeben.
Nun versuche ich mich daran, dies auch gleich über die REST API an DHL zu übermitteln.
Ich habe nun 1 Problem, von dem ich eines überhaupt nicht versteh :
̵1̵.̵)̵ ̵D̵i̵e̵ ̵G̵r̵u̵n̵d̵c̵o̵d̵i̵e̵r̵u̵n̵g̵ ̵m̵e̵i̵n̵e̵r̵ ̵S̵c̵r̵i̵p̵t̵e̵ ̵(̵S̵t̵r̵g̵ ̵-̵ ̵,̵)̵ ̵i̵s̵t̵ ̵a̵u̵f̵ ̵U̵T̵F̵8̵ ̵e̵i̵n̵g̵e̵s̵t̵e̵l̵l̵t̵.̵ ̵I̵m̵ ̵A̵r̵r̵a̵y̵ ̵$̵a̵C̵o̵n̵t̵e̵n̵t̵ ̵i̵s̵t̵ ̵b̵e̵i̵ ̵"̵S̵t̵r̵a̵ß̵e̵"̵ ̵n̵u̵n̵ ̵a̵b̵e̵r̵ ̵d̵a̵s̵ ̵ß̵ ̵f̵a̵l̵s̵c̵h̵ ̵c̵o̵d̵i̵e̵r̵t̵.̵ ̵I̵n̵ ̵m̵e̵i̵n̵e̵m̵ ̵a̵n̵d̵e̵r̵e̵n̵ ̵S̵c̵r̵i̵p̵t̵,̵ ̵m̵i̵t̵ ̵d̵e̵m̵ ̵i̵c̵h̵ ̵d̵i̵e̵ ̵T̵e̵x̵t̵d̵a̵t̵e̵i̵e̵n̵ ̵e̵r̵s̵t̵e̵l̵l̵e̵ ̵n̵u̵t̵z̵e̵ ̵i̵c̵h̵ ̵d̵a̵s̵ ̵A̵r̵r̵a̵y̵ ̵ä̵h̵n̵l̵i̵c̵h̵,̵ ̵d̵a̵ ̵i̵s̵t̵ ̵e̵s̵ ̵"̵ß̵"̵.̵ ̵E̵i̵n̵ ̵ä̵n̵d̵e̵r̵n̵ ̵d̵e̵r̵ ̵G̵r̵u̵n̵d̵k̵o̵n̵f̵i̵g̵ ̵a̵u̵f̵ ̵I̵S̵O̵8̵8̵5̵9̵ ̵o̵.̵ä̵ ̵b̵r̵i̵n̵g̵t̵ ̵a̵u̵c̵h̵ ̵n̵i̵c̵h̵t̵s̵.̵ ̵I̵c̵h̵ ̵h̵a̵b̵e̵ ̵b̵e̵r̵e̵i̵t̵s̵ ̵Z̵e̵i̵c̵h̵e̵n̵t̵a̵b̵e̵l̵l̵e̵n̵ ̵g̵e̵w̵ä̵l̵t̵z̵t̵,̵ ̵a̵b̵e̵r̵ ̵n̵o̵c̵h̵ ̵n̵i̵c̵h̵t̵ ̵e̵r̵f̵o̵l̵g̵r̵e̵i̵c̵h̵
Warum auch immer benötigt VsCode UTF8 with BOM - dann geht es (wobei halt der Variableninhalt selbst das Problem war :/)
2.) [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($user + ":" + $pass)) sollte mir Benutzername und Passwort inkl. ":" als Base64 codieren, eine Voraussetzung für die DHL API. Ich erhalte jedoch den Fehler, dass die Zeichenfolge "User:Pass" ungültig ist?
Edit 2:
Haha - es lag beides an der UTF8-BOM Codierung - wo und wann auch immer das umgestellt wurde? Nun kann ich auch Base64 codieren.
Gruß
Bitte um Hilfe zurück auf den Weg .
Gruß Unreal
ich habe mal eine naive Frage, nachdem Google mir leider nur für mich interessante Artikel zum Thema PS-Script Codierung vorschlägt, die nicht für mich interessant sind. Ich habe in der Vergangenheit ein PS Script erstellt mit dem ich Adressdaten in eine txt schreibe um diese automatisch ans ERP zu übergeben.
Nun versuche ich mich daran, dies auch gleich über die REST API an DHL zu übermitteln.
#
#Für Test und Entwicklung (Sandbox) nutzen Sie folgende Endpunkte:
#SOAP Services: https://cig.dhl.de/services/sandbox/soap
#REST Services: https://cig.dhl.de/services/sandbox/rest
#Für die produktive Nutzung nach der Freigabe nutzen Sie foglende Endpunkte:
#SOAP Services: https://cig.dhl.de/services/production/soap
#REST Services: https://cig.dhl.de/services/production/rest
#
<# Sandbox
Benutzername: EntwickerID
Passwort: Entwicklerportal Passwort
Die EntwicklerID finden Sie unter "Mein Konto" (einfach Ihren Namen oben rechts anklicken). Als Passwort verwenden Sie das Passwort mit dem Sie sich am Entwicklerportal angemeldet haben.
Produktion
Benutzername: ApplikationsID
Passwort: Applikationstoken
Für den produktiven Zugriff benötigen Sie eine ApplikationsID und ein Applikationstoken. Diese können Sie sich nach der Freigabe ihrer Applikation zur Produktiven Nutzung unter "Meine Applikationen" anzeigen bzw. generieren.
Zusätzlich ist für die Geschäftskundenversand-API folgendes zu beachten:
In der Produktivumgebung ist im Header zusätzlich zwingend die SOAPAction der jeweiligen Operation mit anzugeben, bspw. "SOAPAction: "urn:createShipmentOrder"[\r][\n]"
#>
$debug = $true
if ($debug){
$url_Main = "https://cig.dhl.de/services/sandbox"
$url_RESTEndpoint = "/rest"
$url_SOAPEndpoint = "/soap"
$url = $url_Main + $url_RESTEndpoint
$user = "auser"
$pass = "apass"
#Authorization: Basic <base-64 coded cigUser:cigPassword>
# $token = [Convert]::ToBase64String($user + ":" + $pass)
$filepath = "Somewhere\DHL"
}else {
$url_Main = "https://cig.dhl.de/services/production"
$url_RESTEndpoint = "/rest"
$url_SOAPEndpoint = "/soap"
$url = $url_Main + $url_RESTEndpoint
$user = "auser"
$pass = "apass"
#Authorization: Basic <base-64 coded cigUser:cigPassword>
$token = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($user + ":" + $pass))
$filepath = "Somewhere\DHL"
}
$list = dir $filepath
foreach ($file in $list){
try{
$txtContent = Get-Content $filepath\$file -raw -Encoding UTF8
$aContent = @("Vorname","Nachname","Straße","Hausnummer","PLZ","Wohnort","Mail")
foreach ($part in $aContent){
$txtContent -Match "(?<=$part)( +)(\w+)"
switch ($part){
"Vorname"{
$Vorname = $Matches[2]
break;
}
"Nachname"{
$Nachname = $Matches[2]
break;
}
"Straße"{
$Straße = $Matches[2]
break;
}
"Hausnummer"{
$Hausnummer = $Matches[2]
break;
}
"PLZ"{
$PLZ = $Matches[2]
break;
}
"Wohnort"{
$Wohnort = $Matches[2]
break;
}
"Mail"{
$Mail = $Matches[2]
break;
}
}
}
Write-Host $Vorname $Nachname "wohnt in" $PLZ $Wohnort
}catch{
Write-Host "Fehler"
}
}
Ich habe nun 1 Problem, von dem ich eines überhaupt nicht versteh :
̵1̵.̵)̵ ̵D̵i̵e̵ ̵G̵r̵u̵n̵d̵c̵o̵d̵i̵e̵r̵u̵n̵g̵ ̵m̵e̵i̵n̵e̵r̵ ̵S̵c̵r̵i̵p̵t̵e̵ ̵(̵S̵t̵r̵g̵ ̵-̵ ̵,̵)̵ ̵i̵s̵t̵ ̵a̵u̵f̵ ̵U̵T̵F̵8̵ ̵e̵i̵n̵g̵e̵s̵t̵e̵l̵l̵t̵.̵ ̵I̵m̵ ̵A̵r̵r̵a̵y̵ ̵$̵a̵C̵o̵n̵t̵e̵n̵t̵ ̵i̵s̵t̵ ̵b̵e̵i̵ ̵"̵S̵t̵r̵a̵ß̵e̵"̵ ̵n̵u̵n̵ ̵a̵b̵e̵r̵ ̵d̵a̵s̵ ̵ß̵ ̵f̵a̵l̵s̵c̵h̵ ̵c̵o̵d̵i̵e̵r̵t̵.̵ ̵I̵n̵ ̵m̵e̵i̵n̵e̵m̵ ̵a̵n̵d̵e̵r̵e̵n̵ ̵S̵c̵r̵i̵p̵t̵,̵ ̵m̵i̵t̵ ̵d̵e̵m̵ ̵i̵c̵h̵ ̵d̵i̵e̵ ̵T̵e̵x̵t̵d̵a̵t̵e̵i̵e̵n̵ ̵e̵r̵s̵t̵e̵l̵l̵e̵ ̵n̵u̵t̵z̵e̵ ̵i̵c̵h̵ ̵d̵a̵s̵ ̵A̵r̵r̵a̵y̵ ̵ä̵h̵n̵l̵i̵c̵h̵,̵ ̵d̵a̵ ̵i̵s̵t̵ ̵e̵s̵ ̵"̵ß̵"̵.̵ ̵E̵i̵n̵ ̵ä̵n̵d̵e̵r̵n̵ ̵d̵e̵r̵ ̵G̵r̵u̵n̵d̵k̵o̵n̵f̵i̵g̵ ̵a̵u̵f̵ ̵I̵S̵O̵8̵8̵5̵9̵ ̵o̵.̵ä̵ ̵b̵r̵i̵n̵g̵t̵ ̵a̵u̵c̵h̵ ̵n̵i̵c̵h̵t̵s̵.̵ ̵I̵c̵h̵ ̵h̵a̵b̵e̵ ̵b̵e̵r̵e̵i̵t̵s̵ ̵Z̵e̵i̵c̵h̵e̵n̵t̵a̵b̵e̵l̵l̵e̵n̵ ̵g̵e̵w̵ä̵l̵t̵z̵t̵,̵ ̵a̵b̵e̵r̵ ̵n̵o̵c̵h̵ ̵n̵i̵c̵h̵t̵ ̵e̵r̵f̵o̵l̵g̵r̵e̵i̵c̵h̵
Warum auch immer benötigt VsCode UTF8 with BOM - dann geht es (wobei halt der Variableninhalt selbst das Problem war :/)
2.) [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($user + ":" + $pass)) sollte mir Benutzername und Passwort inkl. ":" als Base64 codieren, eine Voraussetzung für die DHL API. Ich erhalte jedoch den Fehler, dass die Zeichenfolge "User:Pass" ungültig ist?
Edit 2:
Haha - es lag beides an der UTF8-BOM Codierung - wo und wann auch immer das umgestellt wurde? Nun kann ich auch Base64 codieren.
Gruß
Bitte um Hilfe zurück auf den Weg .
Gruß Unreal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 663264
Url: https://administrator.de/contentid/663264
Ausgedruckt am: 22.11.2024 um 07:11 Uhr