我已将simpleGeo示例从VB(langsamu)移到C#。这是我的需求的一个惊人的功能,但我无法修复我无法正确初始化测试它的OAuth类。我已经在这个底部链接中发布了我的完整项目,包括示例。 simpleGeo.dll实现基类来连接和查询simpleGeo。 Client.cs是要去的主要观点。实现ConsumerBase。需要和Gmaps键和simpleGeo键更容易获得。有人可以帮我解决。
感谢您的帮助,Romi。
这里是VB:http github.com / simplegeo / simplegeo-dotnet
这里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; }
}
....
答案 0 :(得分:1)
好吧,我喜欢simplegeo,但是这些家伙并不认为.NET是一个可行的API消费者:) - VB样本几乎没用,SimpleGeo.NET似乎被放弃了(?)。我决定推出自己的客户端来实现我想到的项目,因为有一个优秀的REST库支持OAuth(RestSharp)我试了一下simplegeo。下面是一个非常粗鲁的例子:
//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;
使用Json.NET反序列化到您的任何自定义类中。
根据传递的参数,您可能有一个帮助程序类为您构建请求 - 将版本保存在某个未硬编码的地方以防万一:)