Я пытаюсь создать программу, которая проверяет, доступен ли номер в нескольких телефонных компаниях. Я делаю эту программу на языке 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:
Я думаю, что есть несколько причин, почему это не работает:
- Не думаю, что данные нужно отправлять в виде словаря.
- Вывод, который они возвращают, является более сложным, чем я думаю.
- Я полный нуб
Пожалуйста, попытайтесь мне помочь, даже если этот вопрос длинный.
(Я сделал все, что мог, надеюсь, мой вопрос хороший. Если этот вопрос недостаточно подробен, я не знаю, какой именно.)
Большое спасибо