Zurzeit arbeite ich an einem Projekt bei dem aus Microsoft Navision („Dynamics Nav“ oder wie das jetzt heißt) heraus Daten nach Shopware geschrieben werden sollen.
Dazu scheint mit die REST-API von Shopware gut geeignet zu sein. Aus diesem Grund habe ich ein Beispielprojekt geschrieben. Das ganze ist eine .NET-4-Konsolenanwendung mit einer einzigen Datei.
Den Quelltext findet Ihr nachfolgend (alternativ auch bei Pastebin):
namespace ShopwareRestApiTest01
{
using System;
using System.Globalization;
using System.Net;
using Newtonsoft.Json;
using RestSharp;
internal class Program
{
static void Main()
{
const string user = "demo";
const string pass = "NtMd3OIouT2sr0aJcllBIx1fH3SgxmRr0T6r7D4P";
// http://restsharp.org/
var client =
new RestClient(@"http://192.168.147.169/api")
{
Authenticator = new DigestAuthenticator(user, pass)
};
var request = new RestRequest("articles/{id}", Method.GET);
request.AddUrlSegment("id", 3.ToString(CultureInfo.InvariantCulture)); // replaces matching token in request.Resource
// easily add HTTP Headers
request.AddHeader("Content-Type", "application/json; charset=utf-8");
// or automatically deserialize result
// return content type is sniffed but can be explicitly set via RestClient.AddHandler();
var response = client.Execute(request);
if (response.ErrorException != null)
{
Console.WriteLine(@"################ ERROR ################");
Console.WriteLine(response.ErrorException.Message);
}
else
{
var content = response.Content; // raw content as string
dynamic json = JsonConvert.DeserializeObject(content);
Console.WriteLine(json);
}
}
}
public class DigestAuthenticator :
IAuthenticator
{
private readonly string _user;
private readonly string _pass;
public DigestAuthenticator(string user, string pass)
{
_user = user;
_pass = pass;
}
public void Authenticate(IRestClient client, IRestRequest request)
{
request.Credentials = new NetworkCredential(_user, _pass);
}
}
}
In dem Projekt verwende ich auch zum ersten Mal NuGet, dem wirkliche eleganten Paket-Manager für Visual Studio. Damit lade ich Json.NET und RestSharp als Referenz in das Projekt.