Я пытаюсь подключиться к индексировать IG потокового API с использованием LightStreamer
, и я работаю на этом уроке http://www.lightstreamer.com/docs/client_generic_base/Network%20Protocol%20Tutorial.pdfLightstreamer создать сеанс
Я успешно создал сеанс потоковой передачи (стр 16 4,1 - /lightstreamer/create_session.txt) , выполнив следующие действия:
public void ConnectToLightStreamer(Credentials credentials)
{
var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/create_session.txt");
LightStreamerRequest.Method = "POST";
LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");
using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
{
string Body = "LS_user=" + credentials.CLIENTID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_adapter_set=DEFAULT&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true";
streamWriter.Write(Body);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
Stream stream = httpResponse.GetResponseStream();
using (stream)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string responseString = reader.ReadToEnd();
string[] SessionData = responseString.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
string[] sessionID = SessionData[1].Split(':');
credentials.SESSIONID = sessionID[1];
string[] controlAddress = SessionData[2].Split(':');
credentials.CONTROLADDRESS = controlAddress[1];
Console.WriteLine(responseString);
Console.WriteLine("CONNECTED");
Console.WriteLine(Environment.NewLine);
Console.WriteLine(Environment.NewLine);
}
}
мне удалось успешно связать сессию (стр 18/19, /lightstreamer/bind_session.txt), выполнив следующие действия:
public void BindSession(Credentials credentials)
{
var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/bind_session.txt");
LightStreamerRequest.Method = "POST";
LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");
using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
{
string Body = "LS_user=" + credentials.CLIENTID + "&LS_session=" + credentials.SESSIONID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_adapter_set=DEFAULT&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true&LS_polling_millis=1000";
streamWriter.Write(Body);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
Stream stream = httpResponse.GetResponseStream();
using (stream)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string responseString = reader.ReadToEnd();
Console.WriteLine("BIND: " + responseString);
}
}
Моя проблема У меня возникла сессия, и я выяснил, какую информацию я должен отправить и как. Страница 20/21 /lightstreamer/control.txt.
У меня есть следующие, но я знаю, что это не так, как я не получаю никакого ответа:
public void ControlStreamer(Credentials credentials)
{
var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/control.txt");
LightStreamerRequest.Method = "POST";
LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");
using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
{
string Body = "LS_user=" + credentials.CLIENTID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_session=" + credentials.SESSIONID + "&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true&LS_polling_millis=1000&LS_table=" + credentials.SESSIONID + "&LS_op=add&LS_schema=MARKET:IX.D.DOW.DAILY.IP&LS_id=1&LS_mode=MERGE";
streamWriter.Write(Body);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
Stream stream = httpResponse.GetResponseStream();
using (stream)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string responseString = reader.ReadToEnd();
Console.WriteLine("CONTROL: " + responseString);
}
}
Я был полный разработчик времени в течение года, и этот проект находится на очень край моего предела и понимания.
Я занимаюсь этим проектом в течение 2 полных дней +, но едва ли понимаю документацию.
Если кто-нибудь может объяснить мне, что я делаю неправильно, или указать мне на рабочий пример, я был бы очень благодарен.