2010-09-01 6 views
1

J'ai déplacé l'échantillon simpleGeo de VB (langsamu) en C#. C'est une fonctionnalité étonnante pour mes besoins mais je n'ai pas réussi à corriger la classe OAuth que je ne peux pas initialiser correctement pour la tester. J'ai posté mon projet complet dans ce lien du bas, y compris l'échantillon. Le simpleGeo.dll implémenter des classes de base pour se connecter et interroger simpleGeo. Client.cs est le point principal pour aller & implémentant ConsumerBase. besoin et clé Gmaps et clé simpleGeo plus facile à obtenir. Quelqu'un peut-il m'aider à réparer.SimpleGeo DotnetOpenAuth pour C#

Merci pour votre aide, Romi.

ici VB: http github.com/SimpleGeo/SimpleGeo-dotnet

ici C#: C# simpleGeo that need your help

namespace SimpleGeo 
{ 
    public class Client : DotNetOpenAuth.OAuth.ConsumerBase 
    { 
     private SimpleGeo.Description Services; 
     private SimpleGeo.TokenManager Tokens; 

     public Client(Version Version, string Key, string Secret): base(new Description(Version), new TokenManager(Key, Secret)) 
     { 
      //added because not firing Public proprieties of base. 
      Services = new Description(Version);//remplace Services 
      Tokens = new TokenManager(Key, Secret);//remplace Token 
     } 
     ... 
     public ServiceProviderDescription Service 
     { 
      get { return base.ServiceProvider; } 
     } 

     private IConsumerTokenManager Token 
     { 
      get { return base.TokenManager; } 
     } 
     .... 

Répondre

1

Eh bien, j'aime SimpleGeo mais les gars ne voient pas .NET en tant que consommateur API viable:) - L'échantillon VB est à peu près inutile et SimpleGeo.NET semble abandonné (?). J'ai décidé de déployer mon propre client pour un projet que j'ai en tête et comme il y a une excellente bibliothèque REST supportant OAuth (RestSharp), j'ai fait un essai avec simplegeo. Un exemple très grossier suit:

//create client and pass OAuth credentials 
RestClient client = new RestClient("http://api.simplegeo.com"); 
client.Authenticator = OAuth1Authenticator.ForRequestToken(yourapikey, yoursecret); 

//sample of creating a request for a specific simplegeo endpoint (places near an IP) 
RestRequest request = new RestRequest(Method.GET) {Resource = "{version}/places/{ip}.json", RequestFormat.Json}; 
request.AddParameter("version", "1.0", ParameterType.UrlSegment); 
request.AddParameter("ip", anyiphere, ParameterType.UrlSegment); 

//call the api function 
RestResponse response = client.Execute(request); 

//get the simplegeo response in json 
string json = response.Content; 

Utilisez Json.NET pour désérialisation dans toutes les classes personnalisées de la vôtre.

Vous pouvez avoir une classe d'aide la construction de la demande pour vous en fonction des paramètres passés - garder la version quelque part pas hardcoded juste au cas où :)