Правильный способ POST-запроса в C # - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь создать программу, которая проверяет, доступен ли номер в нескольких телефонных компаниях. Я делаю эту программу на языке C #. Недавно мне удалось успешно получить эти данные от 3 из 4 компаний, и я не могу найти способ получить статус из последней.

Это URL-адрес веб-сайта, с которым у меня возникают трудности: https://www.partner.co.il/internet_and_phone/asterisk.
пользователь должен ввести желаемое 4-значное число и нажать кнопку, после чего он напечатает подходящее сообщение.

После тщательного изучения их файлов я вижу, что их код отправляет POST-запрос со следующими данными: {Number: (number), Action: "checkNumberStatus"}.
это их запрос:

jQuery.post("/OrangeMinisites/Handlers/AsteriskRegulation.ashx", {
                Number: number,
                Action: "CheckNumberStatus"
            }, function(data) {
                var response = eval('(' + data + ')');
                if (response.Success) {
                    jQuery("#loader").hide();
                    jQuery("[data-number-status='available']").show();
                }
                else {
                    jQuery("#loader").hide();
                    if (response.ErrorMessage == "notvalid") {
                        jQuery("[data-number-status='notvalid']").show();
                    }
                    else if (response.ErrorMessage == "unavailable") {
                        jQuery("[data-number-status='unavailable']").show();
                    }
                    else if (response.ErrorMessage == "networkusage") {
                        jQuery("[data-number-status='networkusage']").show();
                    }
                    else {
                        jQuery("#errSpan").text(response.ErrorMessage);
                        jQuery("[data-number-status='error']").show();
                    }
                }
            });

Я вроде новичок в запросах, вот что я выполнил:

class Program
    {
        static void Main(string[] args)
        {
            //Cellcom cellcom = new Cellcom("https://www.cellcom.co.il/support/stars/");
            //Console.WriteLine(cellcom.GetStarValue("9294"));

            //Hot hot = new Hot("https://www.hot.net.il/PageHandlers/GetStarNumbers.aspx?c=", "&Lcid=1037");
            //Console.WriteLine(hot.GetStarStatus("9294"));

            //Bezeq bezeq = new Bezeq("https://netivr.bezeq.co.il/stars/CheckNumber.ashx");
            //Console.WriteLine(bezeq.GetStarStatus("9294"));

            Partner partner = new Partner("https://www.partner.co.il/internet_and_phone/asterisk/OrangeMinisites/Handlers/AsteriskRegulation.ashx");
            Console.WriteLine("status: " + partner.GetStarStatus("9294"));
        }
    }

    class Partner 
    {
        private string url;
        private static readonly HttpClient client = new HttpClient();
        private string respondString;

        public Partner(string url) 
        {
            this.url = url;
        }

        public string GetStarStatus(string star) 
        {
            var request = (HttpWebRequest)WebRequest.Create(this.url);

            var postData = new Dictionary<string, string>{ { "Number", star }, { "Action", "checkNumberStatus" } };
            var content = new FormUrlEncodedContent(postData);
            continueRequestAsync(content);
            //var data = Encoding.ASCII.GetBytes(postData);



            return this.respondString;
        }

        public async void continueRequestAsync(FormUrlEncodedContent content)
        {
            var response = await Partner.client.PostAsync(this.url, content);

            var responseString = await response.Content.ReadAsStringAsync();

            this.respondString = responseString;
        }

    }

К сожалению, вывод просто:

status: 

Я думаю, что есть несколько причин, почему это не работает:

  1. Не думаю, что данные нужно отправлять в виде словаря.
  2. Вывод, который они возвращают, является более сложным, чем я думаю.
  3. Я полный нуб

Пожалуйста, попытайтесь мне помочь, даже если этот вопрос длинный.

(Я сделал все, что мог, надеюсь, мой вопрос хороший. Если этот вопрос недостаточно подробен, я не знаю, какой именно.)

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...