Code Examples
POST /arkivmelding
public async Task Post(){
await SendArkivmeldingAsync(@"c:\temp\arkivmelding.zip");
}
public async Task SendArkivmeldingAsync(string arkivmeldingZip)
{
using (var http = new HttpClient()
{
BaseAddress = new Uri("http://arkivmeldingapi.azurewebsites.net"),
})
{
http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var mulitipart = new MultipartContent("related", Guid.NewGuid().ToString("N"));
var filnavn = Path.GetFileName(arkivmeldingZip);
var metadata = new {type = "arkivmelding", files = new[] {new
{
contentid="content1",
filename=filnavn,
hash="F7F1C95DC61E52995A15FA2155403AC6752EC390D4743ACD35DACEA68680A536",
alg="SHA256",
metadata=false
}}};
var metaContent= new StringContent(JsonConvert.SerializeObject(metadata), Encoding.UTF8, "application/json");
mulitipart.Add(metaContent);
var fileBytesContent = new ByteArrayContent(File.ReadAllBytes(arkivmeldingZip));
fileBytesContent.Headers.Add("Content-Disposition", $"form-data; name=\"arkivmelding\"; filename=\"{filnavn}\"");
fileBytesContent.Headers.Add("Content-Type", "application/zip");
fileBytesContent.Headers.Add("Content-Id", "content1");
mulitipart.Add(fileBytesContent);
try
{
var response = await http.PostAsync("api/6CF63C7F-B738-4B0E-BB50-08080B0360F1/arkivmelding/",
mulitipart);
response.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
Console.WriteLine("error: {0}", ex.Message);
}
}
}
POST /arkivmelding/arkiverdokument
public async Task Post(){
await SendMeldingAsync(@"c:\temp\melding.zip");
}
public async Task SendMeldingAsync(string meldingZip)
{
using (var http = new HttpClient()
{
BaseAddress = new Uri("http://arkivmeldingapi.azurewebsites.net"),
})
{
http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var mulitipart = new MultipartContent("related", Guid.NewGuid().ToString("N"));
var filnavn = Path.GetFileName(meldingZip);
var metadata = new {type = "melding", files = new[] {new
{
contentid="content1",
filename=filnavn,
hash="F7F1C95DC61E52995A15FA2155403AC6752EC390D4743ACD35DACEA68680A536", //må være korrekt hash av meldingZip
alg="SHA256",
metadata=false
}}};
var metaContent= new StringContent(JsonConvert.SerializeObject(metadata), Encoding.UTF8, "application/json");
mulitipart.Add(metaContent);
var fileBytesContent = new ByteArrayContent(File.ReadAllBytes(meldingZip));
fileBytesContent.Headers.Add("Content-Disposition", $"form-data; name=\"melding\"; filename=\"{filnavn}\"");
fileBytesContent.Headers.Add("Content-Type", "application/zip");
fileBytesContent.Headers.Add("Content-Id", "content1");
mulitipart.Add(fileBytesContent);
try
{
var response = await http.PostAsync("api/6CF63C7F-B738-4B0E-BB50-08080B0360F1/arkivmelding/arkiverdokument",
mulitipart);
response.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
Console.WriteLine("error: {0}", ex.Message);
}
}
}
<?php
public function sendMeldingAsync($meldingZip)
{
$client = new Client(['base_uri' => 'https://arkivmelding-api-test.azurewebsites.net']);
// calculate SHA256 hash from $meldingZip
$hash = strtoupper(hash_file('sha256', $meldingZip));
$filnavn = basename($meldingZip);
$metadata = [
'type' => 'arkivmelding',
'files' => [
[
'contentid' => 'content1',
'filename' => $filnavn,
'hash' => $hash,
'alg' => 'SHA256',
'metadata' => false
]
]
];
$metaContent = json_encode($metadata);
// Create a boundary
$boundary = bin2hex(random_bytes(20));
$multipart = new MultipartStream([
[
'name' => 'metadata',
'contents' => $metaContent,
'headers' => ['Content-Type' => 'application/json']
],
[
'name' => 'melding',
'contents' => fopen($meldingZip, 'r'),
'filename' => $filnavn,
'headers' => [
'Content-Type' => 'application/zip',
'Content-Id' => 'content1',
'Content-Disposition' => 'form-data; name="arkivmelding" filename="' . $filnavn . '"'
]
]
], $boundary);
try {
$response = $client->post('/api/6CF63C7F-B738-4B0E-BB50-08080B0360F1/arkivmelding/arkiverdokument', [
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'multipart/related; boundary=' . $boundary
],
'body' => $multipart
]);
} catch (Exception $e) {
echo "error: " . $e->getMessage();
}
}
#imports
import hashlib
import base64
import os
import json
from io import BytesIO
import aiohttp
from aiohttp import MultipartWriter
...
def generate_hash(file_content):
sha256_hash = hashlib.sha256()
sha256_hash.update(file_content)
return sha256_hash.hexdigest().upper()
async def send_melding_async(zip_content):
url = "https://arkivmelding-api-test.azurewebsites.net/api/6CF63C7F-B738-4B0E-BB50-08080B0360F1/arkivmelding/arkiverdokument"
# Beregn SHA-256 hash av innholdet i zip-filen
hash_value = generate_hash(zip_content)
# Forbered metadata
metadata = {
"type": "melding",
"files": [
{
"contentid": "content1",
"filename": "arkivmelding.zip",
"hash": hash_value,
"alg": "SHA256",
"metadata": False
}
]
}
# Opprett en unik boundary
boundary = os.urandom(16).hex()
# Opprett MultipartWriter for multipart data med spesifikk boundary
# Legg til metadata i multipart-forespørselen
form_data = MultipartWriter('related', boundary=boundary)
metadata_part = form_data.append_json(metadata, {
'Content-Type': 'application/json',
})
# Legg til filinnholdet (ZIP-filen) i multipart-forespørselen med korrekt Content-Id
file_part = form_data.append(zip_content, {
'Content-Type': 'application/zip',
'Content-Disposition': f'form-data; name="melding"; filename="arkivmelding.zip"',
'Content-Id': 'content1'
})
# Send forespørselen
async with aiohttp.ClientSession() as session:
async with session.post(url, data=form_data, headers={
'Accept': 'application/json',
'Content-Type': f'multipart/related; boundary={boundary}'
}, ssl=True) as response:
response_text = await response.text()
return response.status, response_text # Returner status og respons-innhold