@Стефан, что считать "прямой"? Есть ли у решения использовать "сортировку"? Вы можете сделать это "старая школа" и использовать псевдонимы, например, как определено в свой `.bashrc следующее, такие как псевдоним узел1="узел1 фтп.полный.имя"`. Теперь вы можете просто ввести `узел1`. Я считаю, что этот параметр (или эквивалент) теперь называется что-то вроде "сразу показать рисунок". Пожалуйста, попробуйте добавить ответ здесь, Если вы нашли. Это будет полезно в случае, когда сайт выходит из строя или ссылка не работает. ладно,да! правда! -хотя некоторые из этих программ не будет кросс-платформы Ну, изначально, кажется, работает, но я буду видеть, если все-таки держать, что после перезагрузки и/или глубокого сна.
строка запроса()
{
 строки URL = "https://api.bitfinex.com/v1/balances";
 строки paramDict = "{\"запрос\":\"\\/В1\\/противовесов\",\"\ извращенец":\"" + GetNonce() * 100000 + "\"}";
 строку сообщения = EncodeTo64(paramDict);
 строку сообщения = нагрузки;
 строки Скей = тайна;
 Системы.Текст.ASCIIEncoding кодировка = новая система.Текст.ASCIIEncoding();
 байт[] keyByte = кодировка.Метод getbytes(Скей);
 HMACSHA384 hmacsha384 = новый HMACSHA384(keyByte);
 байт[] messageBytes = кодировка.Метод getbytes(сообщение);
 байт[] hashmessage = hmacsha384.Метода computehash(messageBytes);
 строки подписи = это.ByteToString(hashmessage);
 ВАР заголовки = новый словарь<строка, строка>
{
{"Х-BFX вызывает количество приложений-значение apiKey",ключ},
{"Х-BFX вызывает количество приложений-груз",грузоподъемность},
{"Х-BFX вызывает количество приложений-подпись",подпись}
};
 ВАР запрос = запросы WebRequest.Создать(новый URI(URL-адрес)) как класса HttpWebRequest;
 если (запрос == нуль)
 бросить новое исключение("не HTTP запросы WebRequest");

 данных var = кодировка.Метод getbytes(paramDict);
 запрос.Метод = "сообщение";
 запрос.Параметр timeout = 30000;
 запрос.ContentLength = данные.Длина;
 по каждому элементу (ВАР в заголовках)
{
 запрос.Заголовки.Добавить(а.Ключ,.Значение);
}

 ВАР писать = запрос.Метод getrequeststream();
 написать.Записи(данные, 0, данные.Длина);

 ВАР реакция = запрос.Метод GetResponse() как класс httpwebresponse;

 возвращать значение null;
}

это новый код, чтобы исправить ошибки с HMACSHA384

 строки ByteToString(байт[] бафф)
{
 строки sbinary = "";

 для (int я = 0; я < бафф.Длина; я++)
{
 sbinary += бафф[я].Метод toString("Х2"); формат // наговор 
}
 возвращение (sbinary);
}

и еще некоторые исправления.

длинные GetNonce()
{
 возвращение извращенец++;
}

 статический публичный строку EncodeTo64(строка toEncode)
{
 байт[] toEncodeAsBytes
 = Система.Текст.ASCIIEncoding.В ASCII.Метод getbytes(toEncode);
 строковый аргумент returnvalue
 = Система.Преобразования.ToBase64String(toEncodeAsBytes);
 возвращает аргумент returnvalue;
}

ну и последний исправить, чтобы доказать ошибку

 строки подписи = это.ByteToString(hashmessage).Нижестоящим();