Просмотр полной версии : Отправка данных qso на EQSL.CC c#
Привет всем !
Подскажите как отправить данные на eqsl.cc используя C#
Что использовать для авторизации и для отправки данных ?
Спасибо
С уважением...
И ещё - я такой позывной нигде не нашел. Фантом какой-то.
Подскажите как отправить данные на eqsl.cc используя C#
Что использовать для авторизации и для отправки данных ?
Т.е., как авторизоваться и пользоваться сервисом e-QSL?
Сергей, мне кажется, что это какой-то "прикол". Достаточно зайти на сервер eQSL.cc и прочитать. Там есть и регистрация и прочее. Тролль какой-то... Пусть включает мозги для самостоятельных действий.
Наверное, Uri, HttpWebRequest и HttpWebResponse, нет?
Наверное, Uri, HttpWebRequest и HttpWebResponse, нет?
Вы про что?
мне кажется, что это какой-то "прикол"
от почитателя альтернативных ОС.
Видимо UZ5DM пишет какую-то программу - аппаратный журнал на языке программирования C# (си + +).
… Фантом какой-то. ...
Плохо ищете «фантомы».
https://uz5dm.io.ua/
… Тролль какой-то...
Вот ваши сообщения, не несущие ничего для коллеги Влада (UZ5DM), и есть троллинг.
Влад, на сайте eqsl.cc есть возможность переключения страниц на русский язык.
...Тролль какой-то ... Пусть включает мозги для самостоятельных действий.
Как пренебрежительно Вы отозвались о коллеге. А если о Вас так скажут? Понравится?
На страничке Programming (http://www.eqsl.cc/qslcard/programming.cfm) есть всё необходимое описание для программистов для работы с данным сервисом.
Видимо UZ5DM пишет какую-то программу - аппаратный журнал на языке программирования C# (си + +).
Совершенно верно !
Сергей, мне кажется, что это какой-то "прикол". Достаточно зайти на сервер eQSL.cc и прочитать. Там есть и регистрация и прочее. Тролль какой-то... Пусть включает мозги для самостоятельных действий.
Если бы это сказал кто то из другого города России - я б еще удивился. А что ждать от "москвича" ? Человека далекого от того что есть другие люди, которые не живут в Москве.
Да простят меня уважаемые модераторы данного раздела - не по теме пишу. Простите. Просто не приятно стало...
C# не знает что такое - зато знает модное слово "тролль" :s10:
Теперь по теме:
Авторизация написана - все работает. Просто нужно мне знать как отравить мне данные. И сколько их отправлять:
Дата
Время
Callsign
Band
Я думаю что это основное .
Наверное, Uri, HttpWebRequest и HttpWebResponse, нет?
Да я это использовал
И сколько их отправлять:
Дата
Время
Callsign
Band
Я думаю что это основное .
Отправляются данные в adif. Пример такого adif тоже есть на страничке programming.
Минимум необходимых полей
<QSO_DATE:8>20000409 <TIME_ON:4>1130 <CALL:6>WB4WXX <BAND:3>20M <MODE:3>SSB <RST_SENT:2>57 <EOR>
Отправляются данные в adif. Пример такого adif тоже есть на страничке programming.
Минимум необходимых полей
То есть нужно сформировать данные как строку (в формате adif) ?
И ещё - я такой позывной нигде не нашел. Фантом какой-то.
Это точно - 212711
То есть нужно сформировать данные как строку (в формате adif) ?
Да, включая header adif и по одной, так сказано в рекомендациях.
То есть вот эти строки
<PROGRAMID:10>UR5EQF_log
<PROGRAMVERSION:7>3.31-61
<ADIF_VER:3>2.0
нужно включить а потом <QSO_DATE:8>20000409 <TIME_ON:4>1130 <CALL:6>WB4WXX <BAND:3>20M <MODE:3>SSB <RST_SENT:2>57 <EOR>
Я правильно понимаю ?
Через программу не передавал, загружаю данные на сайты adif файлом в таком виде:
<QSO_DATE:8>20180610<TIME_ON:4>0540<CALL:6>WB4WXX<BAND:3>20M<MODE:3>SSB<RST_SENT:2>57<RST_RCVD:2>59<FREQ:9>14.000000<EOR>
Без заголовка и каждая связь в одной строке. Данные записаны без пробелов. Для eQSL teg FREQ не нужен - точную частоту они не указывают, но нужен для других сайтов.
Также и RST_RCVD - не отображается, но если присутствует в данных, то не мешает, просто игнорируется сайтом.
Я хочу в своей программе по окончанию qso передавать данные на eqsl.cc
А то как залить на eqsl.cc adif file - это без проблем. Я формирую и читаю adif (на c#) без проблем
Меня интересует только как передать данные текущего qso
Я хочу в своей программе по окончанию qso передавать данные на eqsl.cc
Метод POST
Отправка данных
'http://www.eqsl.cc/qslcard/ImportADIF.cfm?'ADIFData=UR5EQF_log3 <EOH><OPERATOR:4>UR1E<CALL:6>UV5EUE<QSO_DATE:8>20180610<TIME_ON:4>0704<FREQ:2>28<MODE:3>FT8<RST_SENT:2>13<RST_RCVD:3>-15<BAND:3>10M<QSLMSG:37>You WKD with RW4LMR . PSE QSL TU 73!.<EOR>&eQSL_User=Login&eQSL_Pswd=Password
Url взял в комы, чтобы отобразился адрес. При отправке их ставить не надо.
В ответ получите сколько добавлено QSO или как у меня дубликат
Warning: Y=2018 M=06 D=10 UV5EUE 10M FT8 Bad record: Duplicate
Result: 0 out of 1 records added
Метод POST
Отправка данных
Url взял в комы, чтобы отобразился адрес. При отправке их ставить не надо.
В ответ получите сколько добавлено QSO или как у меня дубликат
Спасибо большое !!!
Делаю так :
string Auth = send("https://www.eqsl.cc/QSLCard/LoginFinish.cfm", string.Format("Callsign={0}&EnteredPassword={1}&Login=Go", Login.Text, Password.Text)); // авторизация прошла
вызываю передачу данных:
SendQso();
public void SendQso()
{
string myUrl = "http://www.eqsl.cc/qslcard/ImportADIF.cfm?";
var request = (HttpWebRequest)WebRequest.Create(myUrl);
var postData = "<EOH><OPERATOR:4>UR1E<CALL:6>UV5EUE<QSO_DATE:8>201 80610<TIME_ON:4>0704<FREQ:2>28<MODE:3>FT8<RST_SENT :2>13<RST_RCVD:3>-15<BAND:3>10M<QSLMSG:37>You WKD with RW4LMR . PSE QSL TU 73!.<EOR>&eQSL_User=uz5dm&eQSL_Pswd=********";
//postData += "&thing2=world";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
textBox2.Text = responseString; // смотрю что ответил сервер
}
Ошибка Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
Что я не правильно делаю ?
авторизация прошла
При отправке авторизация не нужна. В запрос уже включены логин и пароль.
var data = Encoding.ASCII.GetBytes(postData);
Перекодировка в UTF8 - var data = Encoding.UTF8.GetBytes(postData);
Я исправил
public void SendQso()
{
string myUrl = "http://www.eqsl.cc/qslcard/ImportADIF.cfm?";
var request = (HttpWebRequest)WebRequest.Create(myUrl);
string postData = "<EOH><OPERATOR:4>UR1E<CALL:6>UV5EUE<QSO_DATE:8>201 80610<TIME_ON:4>0704<FREQ:2>28<MODE:3>FT8<RST_SENT :2>13<RST_RCVD:3>-15<BAND:3>10M<QSLMSG:37>You WKD with RW4LMR . PSE QSL TU 73!.<EOR>&eQSL_User="+Login.Text+"&eQSL_Pswd="+Password.Text;
//postData += "&thing2=world";
var data = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
textBox2.Text = responseString;
}
Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
Поставте какой-нибудь web debugging, к примеру Fiddler Free (https://www.telerik.com/fiddler) и посмотрите, что Вы отправляете по сети сервису, похоже это на запрос.
Можно попробывать отправить массив
// переводим данные в массив байтов
byte[] d = Encoding.UTF8.GetBytes(postData);
// устанавливаем длинну данных для запроса
request.ContentLength = d.Length;
stream = request.GetRequestStream();
// собственно отправляем запрос
stream.Write(d, 0, d.Length);
request.ContentType = "application/x-www-form-urlencoded";
Content-Type: multipart/form-data;
по этому и не верный.
Вы используете сторонний компонет - а он шлет непонятно что...
Лично моя рекомендация: если действительно хотите написать что-то стоящее, то работу с Интернетом нужно писать самому на WinAPI - благо по этому вопросу в инете информации много и не сложно.
Плюс потом ведь захотите на LoTW отправлять?))) А там свои нюансы.
Это существенно проще, чем в сторонних компонентах разбираться.
... Да и еще - шлете по 1 QSO в режиме реального времени? Если да, то не multipart/form-data;
а в Адиф добавляете
&eQSL_User=<USER>&eQSL_Pswd=<PASS>& ?
Нет параметра
string postData = "ADIFData=<EOH><OPERATOR:4>UR1E<CALL:6>UV5EUE<QSO_DATE:8>20 1 80610<TIME_ON:4>0704<FREQ:2>28<MODE:3>FT8<RST_SENT :2>13<RST_RCVD:3>-15<BAND:3>10M<QSLMSG:37>You WKD with RW4LMR . PSE QSL TU 73!.<EOR>&eQSL_User="+Login.Text+"&eQSL_Pswd="+Pas sword.Text;
Получилось? Если нет, посмотрите заголовок запроса, тот который относится к протоколу (http), у меня пару раз встречалось, что сервер был настроен таким образом, что если в запросе не указывается имя клиента (user-agent) - возвращал ошибку. А по умолчанию там кажется ничего и не указывается, при формировании запроса. Хотя если авторизация проходит такое маловероятно, но все же возможно (например, если выполняется проверка на стороне сервера для обработки с разных браузеров.
Да все получилось ! Спасибо всем большое. И огромная благодарность US-E-12 ! :drinks:
Буду продолжать дальше. Нужно научиться принимать данные с eqsl.cc - подтвержденные связи
Powered by QRZ.RU