Преобразование из целого в длинную форму английского языка ... Я мог бы написать это; -) - довольно хорошая статья на эту тему:
using System;
public class NumberToEnglish {
private static string[] onesMapping =
new string[] {
"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine",
"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"
};
private static string[] tensMapping =
new string[] {
"Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"
};
private static string[] groupMapping =
new string[] {
"Hundred", "Thousand", "Million", "Billion", "Trillion"
};
private static void Main(string[] args) {
Console.WriteLine(EnglishFromNumber(long.Parse(args[0])));
}
private static string EnglishFromNumber(int number) {
return EnglishFromNumber((long) number);
}
private static string EnglishFromNumber(long number) {
if ( number == 0 ) {
return onesMapping[number];
}
string sign = "Positive";
if ( number < 0 ) {
sign = "Negative";
number = Math.Abs(number);
}
string retVal = null;
int group = 0;
while(number > 0) {
int numberToProcess = (int) (number % 1000);
number = number / 1000;
string groupDescription = ProcessGroup(numberToProcess);
if ( groupDescription != null ) {
if ( group > 0 ) {
retVal = groupMapping[group] + " " + retVal;
}
retVal = groupDescription + " " + retVal;
}
group++;
}
return sign + " " + retVal;
}
private static string ProcessGroup(int number) {
int tens = number % 100;
int hundreds = number / 100;
string retVal = null;
if ( hundreds > 0 ) {
retVal = onesMapping[hundreds] + " " + groupMapping[0];
}
if ( tens > 0 ) {
if ( tens < 20 ) {
retVal += ((retVal != null) ? " " : "") + onesMapping[tens];
} else {
int ones = tens % 10;
tens = (tens / 10) - 2; // 20's offset
retVal += ((retVal != null) ? " " : "") + tensMapping[tens];
if ( ones > 0 ) {
retVal += ((retVal != null) ? " " : "") + onesMapping[ones];
}
}
}
return retVal;
}
}
У вас более или менее есть 3 варианта:
В настоящее время OAuth подвержен разновидности фишинговых атак, которые в значительной степени не обнаруживаются целью. Поэтому я бы не рекомендовал его, пока протокол не будет изменен.
OAuth также должен быть уроком о том, насколько сложно создавать безопасные протоколы, и поэтому я не решаюсь рекомендовать использовать собственный маршрут.
Это оставляет HTTP-аутентификацию, которая, вероятно, лучше всего, если вы можете ее использовать.
С учетом всего сказанного, почти все в Интернете использует аутентификацию на основе форм, и многие даже не беспокоятся о https для безопасности транспортного уровня, поэтому, возможно, просто отправьте текст пароля в открытом виде "достаточно хорош" для ваших целей.
Если вы можете добавлять HTTP-заголовки к своим запросам, вы можете просто добавить заголовок Authorization
:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
, где вы используете базовую аутентификацию, и QWxhZGRpbjpvcGVuIHNlc2FtZQ = =
бит - это « имя пользователя: пароль
» в кодировке base64 (без кавычек). RFC 2617
Ну, https не имеет ничего общего с аутентификацией, это просто шифрование на транспортном уровне.
если вы взаимодействуете с HTTP api, будь то https или нет, и диалоговое окно всплывает, это означает, что используется HTTP-аутентификация, базовая или дайджест. Если ваш клиент создает экземпляр http-клиента для чтения данных из этих «служб», вы можете передать эти учетные данные при создании экземпляра объекта.
Если вы используете клиентский сценарий, XmlHttpRequest также поддерживает HTTP-аутентификацию.
Итак с точки зрения кода то, как вы передаете учетные данные службам RESTful, зависит от используемого вами http-клиента (объекта, который вы создаете для получения данных). Вы можете просто получить такое имя пользователя / пароль самостоятельно у клиента и использовать его для вызова другой службы.
посмотрите на существующие решения. В данном случае oauth