我想从Stack Overflow使用Stacky C#库获取Stack Exchange的最新问题.
我拿了示例代码并尝试运行它,但它在从Stack Exchange网站返回数据时会挂起.
StackyClient client = new StackyClient("0.9", "", Sites.StackOverflow,
new UrlClient(), new JsonProtocol());
var o = new QuestionOptions();
o.FromDate = DateTime.Now.AddMinutes(-10.0);
o.ToDate = DateTime.Now;
o.IncludeAnswers = false;
o.IncludeBody = false;
o.IncludeComments = false;
o.SortBy = QuestionSort.Creation;
o.SortDirection = SortDirection.Descending;
IPagedList<Question> l = client.GetQuestions(o); <--- program hangs here 4ever
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我还看到我可以注册我的应用程序来获取API密钥.但是,没有必要让它首先运行,是吗?
如果我删除线
o.FromDate = DateTime.Now.AddMinutes(-10.0);
o.ToDate = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)
它起作用并返回所有问题.如果我添加该行
o.Max = 50; …Run Code Online (Sandbox Code Playgroud) 在我修改了一个RESTful Web服务示例以从api.stackexchange.com 调用来自id的用户之后,我得到了JsonParseException:
com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
响应来自api.stackexchange.comgzip压缩.
如何在Spring-Web RestTemplate中添加对gzip压缩响应的支持?
我正在使用Spring boot parent ver.1.3.1.RELEASE因此Spring-Web4.2.4-RELEASE
这是我调整后的例子:
User.java
package stackexchange.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(LowerCaseWithUnderscoresStrategy.class)
public class User {
// Properties made public in order to shorten the example
public int userId;
public String displayName;
public int reputation;
@Override
public String toString() {
return "user{" …Run Code Online (Sandbox Code Playgroud) 我试图从Emacs的elisp访问StackExchange API:
(require 'url)
(require 'json)
(defvar url-http-end-of-headers)
(defun read-json ()
(interactive)
(with-current-buffer (url-retrieve-synchronously "http://api.stackoverflow.com/0.8/users/2386")
(goto-char url-http-end-of-headers)
(json-read)))
Run Code Online (Sandbox Code Playgroud)
M-x read-json导致以下错误:JSON readtable error.
我错过了什么吗?
当有人回复您的问题(或网站上的许多其他操作)时,您会收到一些"新邮件"!在站点左上角的"StackExchange"菜单中键入图标.
在此处查看API文档:http: //api.stackoverflow.com/1.0/usage
我没有看到为登录用户获取"新邮件"计数的方法.可能吗?
我正在尝试以编程方式登录我的stackoverflow.com帐户.我试着像下面那样做一个卷曲,但它要求内容长度:
$ curl -X POST --user abc@gmail.com:abc https://stackoverflow.com/users/login -v
* Trying 151.101.193.69...
* Connected to stackoverflow.com (151.101.193.69) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.stackexchange.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
* Server auth using Basic with user 'abc@gmail.com'
> POST /users/login HTTP/1.1
> Host: stackoverflow.com
> Authorization: Basic YWJjQGdtYWlsLmNvbTphYmM=
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type:application/json
>
< HTTP/1.1 411 Length …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用堆栈交换 API 从堆栈溢出中检索与 Python 相关的问题、问题评论和问题答案。我想提取所有信息,包括问题、评论和答案的正文。为了提取问题,我使用以下代码:
questions = SITE.fetch('questions', tagged='python', fromdate=from_date, todate=today,filter='!9YdnSIN*P')
Run Code Online (Sandbox Code Playgroud)
此过滤器返回与问题相关的所有信息,包括问题的文本正文。但是,当我使用相同的过滤器来提取这些问题的答案时,我没有得到答案的文本正文。这是代码:
answers = SITE.fetch('questions/{ids}/answers', ids=[59239886],filter='!9YdnSIN*P')
Run Code Online (Sandbox Code Playgroud)
当我将过滤器的值更改为
'!*SU8CGYZitCB.D*(BDVIficKj7nFMLLDij64nVID)N9aK3GmR9kT4IzT*5iO_1y3iZ)6W.G*'
Run Code Online (Sandbox Code Playgroud)
它开始检索答案的文本正文,但丢失了其他重要信息(标签),例如显示与问题相关的答案的“question_id”。检索与问题评论相关的信息也存在同样的问题。
谁能指导我如何在不丢失重要信息的情况下获得答案和评论的正文?
我编写了一个小程序来分析StackExchange API中的配置文件数据,但是api会向我发送unsarse-/unreadable数据.
收到的数据:(使用c#自行下载)
\ u001f\B\0\0\0\0\0\U0004\0mRMo0\F /:d $ C'^ {/\u0006\u0018G> \我\ u0015\U0004݀d> GRL'o\u0004G%JP\u001c-EM> 0Xbm〜\u0018tk\u0014M] rdLGv0〜FJ = 1\u00031I> kTRA \"(/ +; NL\u0018 2 H\u0014P藄XaLw#3\U0002 +\u007f\u0010\u000fp】v\u007f \吨ڧ\nf "\ u0018 \00ƺ 1x#j ^- c AX\t \u001aT @ qj \u001aU7 \u0014 \"\ a ^ \b #\ u001eQG%Y \吨חq00K\AV\u0011 {ظ\ u0005 \"\ u001d + |\u007f'\ u0016〜 8\u007f\U0001-H] O\u007fVo\u007f\U0001〜Y\U0003\U0002\0\0
想要的数据:(从我的浏览器复制粘贴)
{ "物品":[{ "badge_counts",{ "青铜":987, "银":654, "金":321}, "ACCOUNT_ID" 123456789 "is_employee":假"LAST_MODIFIED_DATE":1250612752" last_access_date ":1250540770,"年龄":0," reputation_change_year ":987," reputation_change_quarter ":654," reputation_change_month ":321," reputation_change_week ":98," reputation_change_day ":76,"信誉":9876," CREATION_DATE" :1109670518,"user_type":"registered","user_id":123456789,"accept_rate":0,"location":"Australia","website_url":" http://example.org ","link":" …
这是交易:
- Flair几乎要求Facebook应用程序 -
我正在努力学习Facebook平台
因此,我写了一个小巧的Facebook应用程序,将你的Flair嵌入到你个人资料一侧的方框中. 如果您对Facebook感兴趣 ; 请注意,这是一项非常重要的工作,容易发生变化并且有一大堆粗糙的边缘.
但是,我没有一种优雅的方式来说明这是"这是我的Stackoverflow配置文件"来自这个极简的应用程序.我目前的解决方案最能证明这一形象.坦率地说,这是愚蠢的; 并没有什么可以阻止冒充.
没有OpenID的经验,我想知道是否有某种方式(以及这种方式的一些例子)让用户向第三方提供他们的Stackoverflow标识?
在Stackoverfow获得声誉是一项艰苦的工作,如果我能在我的网站上获得声誉,我会感到高兴.可能吗?
stackoverflow是否会针对用户公开任何API?
[UPDATE]
当我输入时
http://api.stackoverflow.com/1.1/users/ {user-id} /
它给了我一个JSON数据,这对我来说似乎很好.可以这样使用它吗?
从stackapps.com得到它回复
Nathan Osman
谢谢.
当从stackexchange API请求Q&A时,JSON响应具有has_more(布尔值)参数,如果为true,则意味着使用
http://api.stackexchange.com/2.2/questions?order=desc&sort=activity&site=stackoverflow&filter=withbody&pagesize=30&tagged=java&page=1
Run Code Online (Sandbox Code Playgroud)
响应看起来像这样
{items: [
..]
has_more: true,
quota_max: 300,
quota_remaining: 281
}
Run Code Online (Sandbox Code Playgroud)
我想要最好的方法来获取所有可能的响应,同时保持quota_max限制。到目前为止,我的模块能够得到一个结果:
exports.getQuestions = function(q,tag,page){
return new Promise(function(resolve, reject){
var request = require('request');
var url = 'http://api.stackexchange.com/2.2/search?order=desc&sort=votes&site=stackoverflow&filter=withbody&pagesize=30';
url = url + '&q=' + q + '&tagged='+ tag + "&page="+page;
request({headers: {
'Accept': 'application/json; charset=utf-8',
'User-Agent': 'RandomHeader'
},
uri: url,
method: 'GET',
gzip: true
},
function(err, res, body) {
if (err || res.statusCode !=200){
reject (err || {statusCode: res.statusCode});
}
resolve(body);
});
})}
Run Code Online (Sandbox Code Playgroud)
但是我想以适当的方式循环或拨打多个电话。任何帮助表示赞赏。
c# ×2
asynchronous ×1
curl ×1
elisp ×1
emacs ×1
facebook ×1
get ×1
login ×1
loops ×1
node.js ×1
openid ×1
php ×1
python ×1
python-3.x ×1
resttemplate ×1
spring ×1
spring-web ×1
stacky ×1
webclient ×1