Kopf-Sammelabrechnung
This commit is contained in:
@@ -21,7 +21,6 @@ Public Class cRelayHub
|
||||
Public Property declarationType As String
|
||||
Public Property referenceNumberOverlay As String ' <--- NEU
|
||||
Public Property username As String ' <--- NEU
|
||||
|
||||
End Class
|
||||
|
||||
Public Class cRelayHubDv1CostAllocation
|
||||
@@ -110,57 +109,68 @@ Public Class cRelayHub
|
||||
|
||||
Public Class cRelayHub_sendToRelayHub_JobOrderRequest
|
||||
|
||||
'Shared API_KEY = "2a6fe6bf-6547-4d56-b14a-8a18f94f9e94"
|
||||
'Shared API_URL = "dev-relayhub.singlewindow.io/api"
|
||||
Shared API_URL = "https://dev-relayhub.singlewindow.io/api/v1-0"
|
||||
Shared API_URL As String = "https://dev-relayhub.singlewindow.io/api/v1-0"
|
||||
|
||||
' Low-level Sender: holt Access-Token aus cRelayHubToken und sendet JSON
|
||||
Private Shared Function SendJobOrder(jsonPayload As String) As Chilkat.HttpResponse
|
||||
Dim http As New Chilkat.Http
|
||||
http.SetRequestHeader("Accept", "application/json")
|
||||
|
||||
' *** Token aus der separaten Token-Klasse beziehen ***
|
||||
Dim token As String = cRelayHubToken.GetValidAccessToken()
|
||||
http.AuthToken = token ' -> setzt Authorization: Bearer <token>
|
||||
|
||||
Return http.PostJson2(API_URL & "/job-orders/init", "application/json", jsonPayload)
|
||||
End Function
|
||||
|
||||
' Public API: erstellt Job-Order mit 401-Retry
|
||||
Public Shared Function query_declarations(request As cRelayHubJobOrderRequest) As cRelayHubApiResult
|
||||
Dim result As New cRelayHubApiResult()
|
||||
Try
|
||||
' This example assumes the Chilkat API to have been previously unlocked.
|
||||
' See Global Unlock Sample for sample code.
|
||||
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
||||
|
||||
Dim success As Boolean
|
||||
|
||||
|
||||
' HTTP-Client initialisieren
|
||||
Dim http As New Chilkat.Http
|
||||
' JSON vorbereiten
|
||||
|
||||
' Request-Objekt in JSON-String umwandeln
|
||||
Dim jsonPayload As String = JsonConvert.SerializeObject(request)
|
||||
' MsgBox(jsonPayload)
|
||||
|
||||
|
||||
' Größe in Bytes
|
||||
Dim payloadSizeBytes As Integer = System.Text.Encoding.UTF8.GetByteCount(jsonPayload)
|
||||
|
||||
' Größe in Kilobytes (1 KB = 1024 Bytes)
|
||||
Dim payloadSizeKb As Double = payloadSizeBytes / 1024.0
|
||||
|
||||
Console.WriteLine("📦 Größe des JSON-Payload:")
|
||||
Console.WriteLine(payloadSizeBytes & " Bytes (" & Math.Round(payloadSizeKb, 2) & " KB)")
|
||||
|
||||
' Anfrage senden
|
||||
Dim response As Chilkat.HttpResponse = http.PostJson2(API_URL & "/job-orders/init", "application/json", jsonPayload)
|
||||
MsgBox(jsonPayload)
|
||||
|
||||
Console.WriteLine(jsonPayload)
|
||||
If http.LastMethodSuccess <> True Then
|
||||
result.Success = False
|
||||
result.StatusCode = 0
|
||||
result.Message = "Verbindungsfehler"
|
||||
result.Details = http.LastErrorText
|
||||
Return result
|
||||
' 1. Versuch
|
||||
Dim response As Chilkat.HttpResponse = SendJobOrder(jsonPayload)
|
||||
If response Is Nothing Then
|
||||
Return New cRelayHubApiResult With {
|
||||
.Success = False, .StatusCode = 0, .Message = "Verbindungsfehler",
|
||||
.Details = "Keine Antwort erhalten."
|
||||
}
|
||||
End If
|
||||
|
||||
result.StatusCode = response.StatusCode
|
||||
' 401 → Token-Cache invalidieren und genau 1x erneut probieren
|
||||
If response.StatusCode = 401 Then
|
||||
' WICHTIG:
|
||||
' Diese Methode sollte in cRelayHubToken als Public verfügbar sein:
|
||||
' Public Shared Sub ResetTokenCache() : ClearToken() : End Sub
|
||||
' → Falls noch nicht vorhanden, bitte dort ergänzen.
|
||||
Try
|
||||
cRelayHubToken.ResetTokenCache()
|
||||
Catch
|
||||
' Falls die Methode (noch) nicht existiert, kann man als Fallback
|
||||
' hier eine kurze Wartezeit einbauen und anschließend erneut GetValidAccessToken() aufrufen.
|
||||
' Threading.Thread.Sleep(100)
|
||||
End Try
|
||||
|
||||
' Retry
|
||||
response = SendJobOrder(jsonPayload)
|
||||
If response Is Nothing Then
|
||||
Return New cRelayHubApiResult With {
|
||||
.Success = False, .StatusCode = 0, .Message = "Verbindungsfehler (nach Refresh)",
|
||||
.Details = "Keine Antwort erhalten."
|
||||
}
|
||||
End If
|
||||
End If
|
||||
|
||||
' Auswertung
|
||||
result.StatusCode = response.StatusCode
|
||||
Select Case response.StatusCode
|
||||
Case 201
|
||||
Try
|
||||
Dim jobResponse As cRelayHubJobOrderResponse = JsonConvert.DeserializeObject(Of cRelayHubJobOrderResponse)(response.BodyStr)
|
||||
Dim jobResponse As cRelayHubJobOrderResponse =
|
||||
JsonConvert.DeserializeObject(Of cRelayHubJobOrderResponse)(response.BodyStr)
|
||||
result.Success = True
|
||||
result.Message = "Job Order erfolgreich erstellt"
|
||||
result.Data = jobResponse
|
||||
@@ -175,18 +185,12 @@ Public Class cRelayHub
|
||||
Case 400 To 499
|
||||
result.Success = False
|
||||
result.Message = "Client-Fehler"
|
||||
result.Message = "StatusCode: " & response.StatusCode
|
||||
result.Details = "StatusLine: " & response.StatusLine
|
||||
result.Details = "StatusText: " & response.StatusText
|
||||
result.Details = "BodyStr: " & response.BodyStr
|
||||
result.Details = response.BodyStr
|
||||
|
||||
Case 500 To 599
|
||||
result.Success = False
|
||||
result.Message = "Server-Fehler"
|
||||
result.Message = "StatusCode: " & response.StatusCode
|
||||
result.Details = "StatusLine: " & response.StatusLine
|
||||
result.Details = "StatusText: " & response.StatusText
|
||||
result.Details = "BodyStr: " & response.BodyStr
|
||||
result.Details = response.BodyStr
|
||||
|
||||
Case Else
|
||||
result.Success = False
|
||||
@@ -194,19 +198,15 @@ Public Class cRelayHub
|
||||
result.Details = response.BodyStr
|
||||
End Select
|
||||
|
||||
Console.WriteLine(result.Message)
|
||||
Console.WriteLine(result.Details)
|
||||
|
||||
Return result
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
|
||||
Return New cRelayHubApiResult With {.Success = False, .StatusCode = 0, .Message = "Exception", .Details = ex.ToString()}
|
||||
End Try
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
' Beispielfall
|
||||
Function CreateSampleJobOrderRequest() As cRelayHubJobOrderRequest
|
||||
Dim request As New cRelayHubJobOrderRequest With {
|
||||
.referenceNo = "1001K",
|
||||
@@ -262,9 +262,8 @@ Public Class cRelayHub
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Return request
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Class
|
||||
End Class
|
||||
Reference in New Issue
Block a user