首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stackoverflow搜索api

stackoverflow搜索api
EN

Stack Overflow用户
提问于 2011-05-17 20:49:55
回答 3查看 3.1K关注 0票数 6

我想使用stackoverflow API的搜索方法根据搜索关键字返回结果的json结构,然后在SearchResults div中显示这些结果(标题、描述和url)。

我是C#新手,我的第一次尝试是这样的:

代码语言:javascript
复制
    protected void searchStockOverflow(string y)
    {

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://api.stackoverflow.com/1.1/search?intitle="+y);
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{ \"intitle\": \"" + y + "\"}";

            streamWriter.Write(json);
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var responseText = streamReader.ReadToEnd();

            SearchResults.InnerHtml += "<div style='border:1px solid blue;margin:5px;'>";
            SearchResults.InnerHtml += responseText + "<br />";
            SearchResults.InnerHtml += "</div><br style='clear:both;' />";
        }
    }

问题是,返回的内容看起来像是垃圾--我猜是因为它是序列化的,需要反序列化?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-17 21:05:11

我肯定会说考虑使用REST客户端;然而,从问题的角度来看...通常,您希望手动将数据反序列化为JSON,然后通过UI代码运行该数据。例如:

代码语言:javascript
复制
static void SearchStackOverflow(string y)
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://api.stackoverflow.com/1.1/search?intitle=" + Uri.EscapeDataString(y));
    httpWebRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
    httpWebRequest.Method = "GET";
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    string responseText;
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        responseText = streamReader.ReadToEnd();
    }
    var result = (SearchResult)new JavaScriptSerializer().Deserialize(responseText, typeof(SearchResult));
    .... do something with result ...
}
class SearchResult
{
    public List<Question> questions { get; set; }
}
class Question
{
    public string title { get; set; }
    public int answer_count { get; set; }
}

它使用来自System.Web.Extensions.dll的JavaScriptSerializer

票数 8
EN

Stack Overflow用户

发布于 2011-05-17 21:00:16

还可以看看Stacky StackApps .Net Client Library,它是一个基于REST的应用程序接口,提供对stackoverflow系列网站的访问。

票数 3
EN

Stack Overflow用户

发布于 2011-05-17 20:57:25

不幸的是,我在我的Mac上,不能在你的代码上运行测试。您可能希望检查页面和返回的响应流的字符编码。如果它们不匹配,可能会导致来自响应流的字符呈现不正确,从而导致您看到的垃圾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6031003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档