Daten in Position Green einfügen
Um Dateien in Position Green zu importieren, können Sie eine Datei per HTTP POST an https://apiurl/imports senden.
Zudem müssen Sie gültige Anmeldedaten in Form eines Zugangstokens angeben.
Die Anfrage muss die Inhaltsart multipart/form-data haben und die Datei muss als variable Datei gesendet werden. Zusammen mit der Dateiart (String) gibt dies die Art der importierten Datei an. Wenn Sie mehrere verschiedene Importe haben, wird diese Angabe verwendet, um festzulegen, mit welchem Import begonnen werden soll. Ausführlichere Informationen zur Verwendung dieser Funktion finden Sie in den Beispielen im Abschnitt "Referenzen" am Ende des Artikels.
Hinweis zu fileType-Werten
fileType ist ein String-Wert, der mit einem vorhandenen Import-Konfigurationsschlüssel in Position Green übereinstimmen muss.
Diese String-Werte werden von Position Green auf Anfrage zur Verfügung gestellt.
Werden weitere Import-Konfigurationen zur Plattform hinzugefügt, wenn das Hochladen über API gewünscht ist, dann muss der verfügbare fileType-Wert erneut angefragt werden.
Beispiel 1 - Eine Datei nur mit HTTP in die Position Green API importieren
namespace TestClient; public class Program { private static string apiUrl = "https://apiurl"; //Provided by Position Green on request private static string loginUrl = "https://oidcurl"; //Provided by Position Green on request public static async Task Main() { Console.Title = "Console Client Credentials Flow"; var token = await RequestToken("clientid", "clientsecret"); //Provided by Position Green on request var fileType = "file type"; //Provided by Position Green on request await UploadFile(token, "data.xml", fileType); } private static async Task<string> RequestToken(string clientId, string clientSecret) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("Accept", "application/json"); client.BaseAddress = new Uri(loginUrl); var grant_type = "client_credentials"; var data = new Dictionary<string, string> { { "client_id", clientId }, { "client_secret", clientSecret }, { "grant_type", grant_type }, }; var postTask = client.PostAsync("/connect/token", new FormUrlEncodedContent(data)); postTask.Wait(); var response = postTask.Result; var token = await response.Content.ReadFromJsonAsync<Token>(); return token.access_token; } static async Task UploadFile(string token, string file, string fileType) { var handler = new HttpClientHandler() { AllowAutoRedirect = false }; var client = new HttpClient(handler) { BaseAddress = new Uri(apiUrl) }; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var form = new MultipartFormDataContent(); var fileData = File.ReadAllBytes(file); var byteArrayContent = new ByteArrayContent(fileData); byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { FileName = file, Name = "file" }; byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml"); form.Add(byteArrayContent, "file"); form.Add(new StringContent(fileType), "fileType"); var response = await client.PostAsync("/imports", form); if (response.StatusCode != HttpStatusCode.OK) { throw new Exception(await response.Content.ReadAsStringAsync()); } return; } } public class Token { public string access_token { get; set; } }
Beispiel 2 - Eine Datei mittels der Datenbank zur Verwaltung von OpenID Connect in die Position Green API importieren
namespace TestClient { class ProgramIdentityModel { public static async Task Main() { var loginUrl = "https://oidcurl"; //Provided by Position Green on request var clientId = "clientid"; //Provided by Position Green on request var clientSecret = "testclient"; //Provided by Position Green on request var response = await RequestTokenAsync(loginUrl, clientId, clientSecret); var apiUrl = "https://apiurl"; //Provided by Position Green on request var fileToUpload = "data.xml"; var fileType = "file type"; //Provided by Position Green on request var redirectUrl = await UploadFile(response.AccessToken, fileToUpload, apiUrl, fileType); } static async Task<TokenResponse> RequestTokenAsync(string loginUrl, string clientId, string clientSecret) { var disco = await DiscoveryClient.GetAsync(loginUrl); if (disco.IsError) throw new Exception(disco.Error); var client = new TokenClient( disco.TokenEndpoint, clientId, clientSecret); return await client.RequestClientCredentialsAsync(); } static async Task<Uri> UploadFile(string token, string file, string apiUrl, string fileType) { var handler = new HttpClientHandler() { AllowAutoRedirect = false }; var client = new HttpClient(handler) { BaseAddress = new Uri(apiUrl), }; client.SetBearerToken(token); var form = new MultipartFormDataContent(); var fileData = await File.ReadAllBytesAsync(file); var byteArrayContent = new ByteArrayContent(fileData); byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { FileName = file, Name = "file" }; byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml"); form.Add(byteArrayContent, "file"); form.Add(new StringContent(fileType), "fileType"); var response = await client.PostAsync("/imports", form); if (response.StatusCode != HttpStatusCode.OK) { throw new Exception(await response.Content.ReadAsStringAsync()); } return response.Headers.Location; } } }
JSON importieren
Wenn die Konfiguration im JSON-Format vorliegt, kann die Importkonfiguration über den Endpunkt /imports/json eingegeben werden. In diesem Fall muss die JSON-Konfiguration als String im Parameter content gesendet werden. Hier sehen Sie die Einzelheiten zum Endpunkt:
POST /imports/json
Erkunden Sie den Importbereich auf unserer Swagger-Seite.
Base64-String importieren
Wenn die Konfiguration im Base64-String-Format vorliegt, kann die Importkonfiguration über den Endpunkt /imports/base64 eingegeben werden. In diesem Fall muss die Base64-Konfiguration als String im Parameter content gesendet werden. Hier sehen Sie die Einzelheiten zum Endpunkt:
POST /imports/base64
Erkunden Sie den Importbereich auf unserer Swagger-Seite.
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren