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.