Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2019, 14:31   #1
AntonCH
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 58
По умолчанию Клиент Web Api

Авторизуюсь к web api - следующий запрос выдает не авторизованный доступ, авторизация на сервере реализована с помощью FormAuthentication. Я так понимаю нужно передавать еще токен? Как это сделать?
Код:
 class Program
    {
        private const string URL = "http://sdfsdfsfd.ru/api/data_from_ch/";
        private const string userName = "sdfsdfsfdr";
        private const string userPassword = "dfsdfsdf";
        private static WebClient client = new WebClient();

        static void Main(string[] args)
        {
            var registerResult = Register();

            Console.WriteLine("Status: {0}", registerResult);

            if (registerResult.Equals("\"Ok\"")) {
                var sendResult = Send(GetJSONDatabaseRecord());
                Console.WriteLine("Status send operation: {0}", sendResult);
            }

            var closeResult = Close();

            Console.WriteLine("Status close: {0}", closeResult);

            Console.ReadKey(false);
        }

        // registration
        static string Register()
        {
            try
            {
                if (!client.IsBusy)
                {
                    var response = client.UploadValues(URL + "AuthAPI?" +
                        "UserLogin=" + userName + "&UserPassword=" + userPassword, new NameValueCollection());
                    return Encoding.UTF8.GetString(response);
                }
                else
                    return "503 Service Unavailable";
            } catch (Exception e) {
                return e.Message;
            }
        }

        static string Send(string JSONData) {
            try {
                if (!client.IsBusy)
                {
                    client.Headers[HttpRequestHeader.ContentType] = "application/json";
                    var response = client.UploadString(URL + "postdata_from_ch", JSONData);
                    return response;
                }
                else
                    return "503 Service Unavailable";
            } catch (Exception e) {
                return e.Message;
            }
        }

        static string GetJSONDatabaseRecord() {
            return "{\"invoice_number\":\""+ GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10) 
                + "\",\"full_name\":\"Surname Name Patronymic\",\"phone\":\"+79268512153\"," +
"\"address\":\"УЛ.КРАВЧЕНКО Д.7\",\"weight\":0.4,\"price\":1,\"brand\":\"\",\"sender\":\"asadasfad\",\"link\":\"\"}";
        }

        static string GenRandomString(string Alphabet, int Length)
        {
            Random rnd = new Random();
            StringBuilder sb = new StringBuilder(Length - 1);
            int Position = 0;

            for (int i = 0; i < Length; i++)
            {

                Position = rnd.Next(0, Alphabet.Length - 1);
                sb.Append(Alphabet[Position]);
            }

            return sb.ToString();
        }

        static string Close() {
            if (!client.IsBusy) {
                var response = client.UploadValues(URL + "conn_close", new NameValueCollection());
                return Encoding.UTF8.GetString(response);
            }
            else
                return "503 Service Unavailable";
        }
    }

Последний раз редактировалось AntonCH; 21.03.2019 в 14:35.
AntonCH вне форума Ответить с цитированием
Старый 21.03.2019, 17:39   #2
AntonCH
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 58
По умолчанию

заработало через httpclient
Код:
 public class data_from_ch
    {
        public string invoice_number { get; set; }
        public string full_name { get; set; }
        public string phone { get; set; }
        public string address { get; set; }
        public double weight { get; set; }
        public Nullable<decimal> price { get; set; }
        public string brand { get; set; }
        public string sender { get; set; }
        public string link { get; set; }
        public bool is_in_pek { get; set; }
    }

    class Program
    {
        private const string URL = "http://sdsd.su/api/data_from_ch/";
        private const string userName = "dsdsdftor";
        private const string userPassword = "gsdfsdfp";
        private static HttpClient client = new HttpClient();

        static void Main(string[] args)
        {
            var registerResult = Register();
            
            registerResult.Wait();
            Console.WriteLine("Status: {0}", registerResult.Status);
            //if (registerResult.Equals("\"Ok\"")) {
            var sendResult = Send(GetJSONDatabaseRecord());
            sendResult.Wait();
            Console.WriteLine("Status send operation: {0}", sendResult.Status);
            //}

            var closeResult = Close();
            closeResult.Wait();
            Console.WriteLine("Status close: {0}", closeResult.Status);

            Console.ReadKey(false);
        }

        // registration
        async static Task<HttpResponseMessage> Register()
        {
            try
            {
                if (client != null)
                {
                    client.BaseAddress = new Uri(URL);
                    var content = new FormUrlEncodedContent(new[]
                    {
                new KeyValuePair<string, string>("UserLogin", userName),
                new KeyValuePair<string, string>("UserPassword", userPassword)
                    });
                    var response = await client.PostAsync("AuthAPI?UserLogin=" + userName + 
                        "&UserPassword=" + userPassword, content);

                    return response;
                }
                else
                    return new HttpResponseMessage(HttpStatusCode.BadGateway);
            } catch (Exception e) {
                return new HttpResponseMessage(HttpStatusCode.InternalServerError);
            }
        }

       async static Task<string> Send(data_from_ch data) {
            try {
                if (client != null)
                {
                    var response = await client.PostAsJsonAsync("postdata_from_ch", data);
                    return response.StatusCode.ToString();
                }
                else
                    return "503 Service Unavailable";
            } catch (Exception e) {
                return e.Message;
            }
        }

        static data_from_ch GetJSONDatabaseRecord() {
            data_from_ch data = new data_from_ch();
            data.invoice_number = GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10);
            data.full_name = "Surname Name Patronymic";
            data.phone = "+79268512153";
            data.address = "РЎРџР±, РЈР›.ГОНЧАР*РќРђРЇ Р”.7";
            data.weight = 0.4;
            data.price = 1;
            data.brand = "sdsdsd";
            data.sender = "asas";
            data.link = "";
            return data;
        }

        static string GenRandomString(string Alphabet, int Length)
        {
            Random rnd = new Random();
            StringBuilder sb = new StringBuilder(Length - 1);
            int Position = 0;

            for (int i = 0; i < Length; i++)
            {

                Position = rnd.Next(0, Alphabet.Length - 1);
                sb.Append(Alphabet[Position]);
            }

            return sb.ToString();
        }

        async static Task<string> Close() {
            try {
                if (client != null)
                {
                    var response = await client.PostAsync("conn_close", null);
                    return response.StatusCode.ToString();
                }
                else
                    return "503 Service Unavailable";
            } catch (Exception e) {
                return e.Message;
            } 
        }
    }
AntonCH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, переписать код приложения по TCP клиент-сервер в UDP клиент - сервер... KhNJu C/C++ Сетевое программирование 3 12.03.2017 23:43
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
сервер+клиент+клиент на телефон Razyiller Работа с сетью в Delphi 3 01.04.2010 20:10
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18