我正在使用Nest API,它支持通过Firebase的REST流。我有REST工作,但是我不能让它正确地流。这对我的应用程序非常重要,REST对我想做的事情并不有效。
我使用Hammock来处理请求,代码如下:
public class NestAPI
{
private RestClient client { get; set; }
public NestAPI()
{
this.client = new RestClient();
this.client.Authority = "https://developer-api.nest.com/";
this.client.HasElevatedPermissions = true;
}
public void BeginStreaming()
{
RestRequest request = new RestRequest();
request.AddParameter("auth", App.accessToken);
request.RetryPolicy = new RetryPolicy() { RetryCount = 3 };
//Enables streaming
//request.AddHeader("Accept", "text/event-stream");
//request.StreamOptions = new StreamOptions() { Duration = new TimeSpan(96, 0, 0), ResultsPerCallback = 1 };
this.client.BeginRequest<object>(request, new RestCallback<object>(this.StreamCompletedEvent));
}
private void StreamCompletedEvent(RestRequest request, RestResponse<object> response, object userState)
{
//TO DO: check for errors first
string json = response.Content;
}
public void EndStreaming()
{
this.client.CancelStreaming();
}
}这段代码可以工作并返回JSON,但是我似乎不能启用流式处理。当我取消注释"Enables“下面的代码行时,回调事件永远不会触发。重要的是要注意,身份验证是使用uri参数"auth“完成的。
不幸的是,似乎没有可用的Firebase库,REST是我唯一的选择。我想知道JSON属性何时更改,并希望在流式传输时设置不同的值。
发布于 2014-07-11 00:23:18
我不熟悉Hammock,但你能确保它是按照重定向设置的吗?流端点通常发出HTTP 307以通知客户端要连接到的正确服务器。
发布于 2014-07-01 05:55:06
我从来没有使用过Hammock,但看一下源代码(简单地),你似乎需要用StreamOptions将它设置为一个流请求。推特上有一些开源的https://github.com/camertron/twitter-windows/blob/master/Source/Twitter/Classes/API/Streaming/UserStream.cs使用了这个。
这里配置Hammock的方式是等待整个请求完成,然后再调用回调。这种情况(几乎)不会发生在流请求中,因为服务器会保持连接打开以推送新的结果。
https://stackoverflow.com/questions/24482751
复制相似问题