Попробуйте сопроводительный текст http://www.sparxsystems.com.au/images/products/logos/EA.png
, Но, Это не свободно
, Это имеет удивительные функции.. Проверьте эти снимки экрана здесь.
И они имеют сопроводительный текст http://www.sparxsystems.com.au/images/products/logos/MDGIntVS-268x73.png и сопроводительный текст http://www.sparxsystems.com.au/images/products/logos/MDGIntEclipse-223x73.png tooo..
В итоге я использовал TcpClient, который отлично работает. Тем не менее, было бы интересно узнать, возможно ли это с помощью WebRequest / WebResponse. Вот мой код на случай, если кому-то интересно:
using (TcpClient client = new TcpClient())
{
string requestString = "GET /spritzer.json HTTP/1.1\r\n";
requestString += "Authorization: " + token + "\r\n";
requestString += "Host: stream.twitter.com\r\n";
requestString += "Connection: keep-alive\r\n";
requestString += "\r\n";
client.Connect("stream.twitter.com", 80);
using (NetworkStream stream = client.GetStream())
{
// Send the request.
StreamWriter writer = new StreamWriter(stream);
writer.Write(requestString);
writer.Flush();
// Process the response.
StreamReader rdr = new StreamReader(stream);
while (!rdr.EndOfStream)
{
Console.WriteLine(rdr.ReadLine());
}
}
}
Вы пробовали WebRequest.BeginGetRequestStream () ?
Или что-то вроде этого:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (http://www.twitter.com );
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string str = reader.ReadLine();
while(str != null)
{
Console.WriteLine(str);
str = reader.ReadLine();
}
BeginGetResponse - это метод, который вам нужен. Он позволяет вам читать поток ответов постепенно:
class Program
{
static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://stream.twitter.com/spritzer.json");
request.Credentials = new NetworkCredential("username", "password");
request.BeginGetResponse(ar =>
{
var req = (WebRequest)ar.AsyncState;
// TODO: Add exception handling: EndGetResponse could throw
using (var response = req.EndGetResponse(ar))
using (var reader = new StreamReader(response.GetResponseStream()))
{
// This loop goes as long as twitter is streaming
while (!reader.EndOfStream)
{
Console.WriteLine(reader.ReadLine());
}
}
}, request);
// Press Enter to stop program
Console.ReadLine();
}
}
Или, если вам удобнее, использовать WebClient (лично я предпочитаю его WebRequest):
using (var client = new WebClient())
{
client.Credentials = new NetworkCredential("username", "password");
client.OpenReadCompleted += (sender, e) =>
{
using (var reader = new StreamReader(e.Result))
{
while (!reader.EndOfStream)
{
Console.WriteLine(reader.ReadLine());
}
}
};
client.OpenReadAsync(new Uri("http://stream.twitter.com/spritzer.json"));
}
Console.ReadLine();
Просто используйте WebClient
. Он разработан для таких простых случаев, когда вам не нужна вся мощь WebRequest.
System.Net.WebClient wc = new System.Net.WebClient();
Console.WriteLine(wc.DownloadString("http://stream.twitter.com/spritzer.json"));