Daniel Santos Ответов: 1

Как я могу получить название страны моего IP-адреса?


Итак, я нашел этот сайт http://ip-api.com/csv/208.80.152.201[^ но дело в том, что все смешалось.
Я только хочу получить название страны после слова" успех".
Есть идеи, как это сделать?

Что я уже пробовал:

Dim клиент как WebClient = новый WebClient()
Тусклый ответ в виде строки = клиент.DownloadString("http://ip-api.com/csv/208.80.152.201")
textbox1. Text = ответ

1 Ответов

Рейтинг:
0

Garth J Lancaster

если вы посмотрите на API doc (для csv) API-интерфейс с IP-адресом - КШМ [ИС-АПИ][^] вы увидите, что информация о возврате

успех, страна, код страны,код региона, название региона, город, почтовый индекс, широта,долгота, часовой пояс, имя провайдера, название организации, номер / имя, IP-адрес, используемый для запроса

Итак, если вы делаете строку.Секущиеся

char[] delimiterChars = { ',' };
String[] csvElements = reply.Split(delimiterChars);

string ipCountry = csvElements[1];


или

string ipCountry = csvElements[2];


Если csvElements[0] = = "успех", то есть

Вы можете обернуть все это в функцию, передать int 1 или 2 для "какой" версии страны вы хотите вернуть, вернуть в виде строки или, возможно, строки.Пусто, если не "успех"

[edit] что-то вроде этого (не скомпилировано и не протестировано)

static string getCountryFromReply(string reply, int countryVersion)
{
	if (!(reply.Trim().StartsWith(“success”)))
	{
		return string.Empty;
	}

	if (countryVersion != 1 && countryVersion != 2)
	{
		throw new argumentException(“Only 1 or 2 Valid”, “countryVersion”);
	}

	char[] delimiterChars = {‘,’};
	string[] csvElements = reply.Split(delimiterChars);

	return csvElements(countryVersion);
}

[/редактировать]

это то, что я имел в виду - вам нужно будет перепечатать его и тщательно проверить, "" - это с моего Mac, VS, скорее всего, будет ругаться на вас, но в этом и суть - вы также можете сделать countryVersion перечислением, чтобы его было легче запомнить,

enum countryVersionReturn {countryLong=1, countryShort};


если вам что-то из этого не нравится, то вы также можете просто запросить нужные вам поля API-интерфейс с IP-адресом - возвращаемых значений [ИС-АПИ][^] в вашем случае country, countryCode, я не уверен, что это возвращает статус ie success / fail, я бы всегда включал поле status в любом случае, что означает, что вам все равно придется разделить строку