theunreal
Goto Top

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.

#
#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 face-sad.
Gruß Unreal

Content-Key: 663264

Url: https://administrator.de/contentid/663264

Printed on: May 10, 2024 at 23:05 o'clock