当前位置: 首页 > 面试题库 >

寻找带有JSON客户端库的REST

陈扬
2023-03-14
问题内容

我需要连接到通过REST接口提供JSON的端点。我真的找不到以一致的方式将这两种技术结合在一起的东西。

我正在寻找一个可以让我快速入门的图书馆。


问题答案:

您可以使用Json.Net库,这个扩展类是利用了DynamicObject

一些用法示例

public static void GoogleGeoCode(string address)
{
    string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";
    dynamic googleResults = new Uri(url + address).GetDynamicJsonObject();

    foreach (var result in googleResults.results)
    {
        Console.WriteLine("[" + result.geometry.location.lat + "," + 
                                result.geometry.location.lng + "] " + 
                                result.formatted_address);
    }
}

public static void GoogleSearch(string keyword)
{
    string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q=";
    dynamic googleResults = new Uri(url + keyword).GetDynamicJsonObject();

    foreach (var result in googleResults.responseData.results)
    {
        Console.WriteLine(
            result.titleNoFormatting + "\n" + 
            result.content + "\n" + 
            result.unescapedUrl + "\n");
    }
}

public static void Twitter(string screenName)
{
    string url = "https://api.twitter.com/1/users/lookup.json?screen_name=" + screenName;
    dynamic result = new Uri(url).GetDynamicJsonObject();
    foreach (var entry in result)
    {
        Console.WriteLine(entry.name + " " + entry.status.created_at);
    }
}

public static void Wikipedia(string query)
{
    string url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=" + query +"&format=json";
    dynamic result = new Uri(url).GetDynamicJsonObject();

    Console.WriteLine("QUESTION: " + result[0]);
    foreach (var entry in result[1])
    {
        Console.WriteLine("ANSWER: " + entry);
    }
}

编辑:

这是另一个没有 DynamicObject

public static void GoogleSearch2(string keyword)
{
    string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q="+keyword;

    using(WebClient wc = new WebClient())
    {
        wc.Encoding = System.Text.Encoding.UTF8;
        wc.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)";
        string jsonStr = wc.DownloadString(url);
        JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonStr);
        foreach (JObject result in jObject["responseData"]["results"])
        {
            Console.WriteLine(
                result["titleNoFormatting"] + "\n" +
                result["content"] + "\n" +
                result["unescapedUrl"] + "\n");
        }
    }
}


 类似资料:
  • 是否可以使用ActiveMQ Artemis客户机库(1.5.x或2.x)连接到HornetQ服务器?

  • 在这两个webendpoint上-但是错误仍然存在。如果WS-Addressing没有设置为true,那么SOAPUI也会失败。

  • 我需要在谷歌云存储中“作为最终用户进行身份验证”(我代表我的应用程序的最终用户访问资源)。因为我的应用程序是用C++编写的。我编译了C++谷歌云存储客户端库。但是这里它声明它需要客户端的JSON文件来创建GCS::Client对象。我找不到任何其他方法来创建带有项目id、服务电子邮件、私钥、密钥名和桶名等信息的客户端(这些信息足以在python中进行身份验证)。有没有办法在谷歌云存储C++客户端库

  • 我有一个来自http工具包的Websocket连接(Clojure,它工作得很好)。我从客户端发送ping以确保我们仍然保持连接,并且在那里一切正常。我的问题是,在这种情况下,人们是否会从服务器ping客户端? 我试图设置一些东西,如果我没有得到响应,就从服务器上删除频道,但是设置定时进程和改变状态来跟踪乒乓周期不是很方便,所以它变得有点难看。然后我就想,服务器能处理几十万个同时连接,我是不是就应

  • 我正在为SharePoint 2007编写一个使用CXF框架(版本:2.7.8)的SOAP客户端。我在这里按照在线文档添加了NTLM支持。我让客户端工作,跟踪HTTP会话显示正在发送NTLM凭证,但是,我仍然收到401未授权响应。 代码: 有趣的是,我使用HTTP PUT for WebDAV编写了一个类似的客户端,使用Apache HTTPClient库上传文档,并且能够使用NTLM成功地进行身

  • 问题内容: 使用Websphere MQ 8.x,我们是较大环境中的一个应用程序,并且是某些数据接口的客户端。我们的应用程序是在WildFly 9上运行的Java EE应用程序,该应用程序使用资源适配器()与EAR文件一起部署在同一AS中。我们在两个方向上与MQ服务器进行交互。因此,一方面,我们有一些MDB(由于历史渊源仍是EJB 2.x格式而没有注释)列出了一些队列,并由包含激活配置属性的部署描