Я не знаю, существует ли функция, которая позволяет мне узнать, существует ли URL-адрес. Надеюсь, это возможно на языке C.Как проверить, существует ли URL-адрес (https) на языке C?
3
A
ответ
1
Это не оптимальный ответ, потому что многие люди там скажут, что system()
is evil. Но это работает, если у вас есть wget
установлен ...
В C++:
int webCheck(const std::string &url)
{
return (std::system(("wget --spider -q " + url).c_str()));
}
Так что я думаю, что в C:
int webCheck(const char url[])
{
return (system(strcat("wget --spider -q ", url)));
}
возвращает 0, если все прошло хорошо, так что вы могли бы сделать это:
if(!webCheck("http://www.cplusplus.com/reference/cstdlib/system/"))
{
printf("OK");
}
Вот ценности, которые она может вернуться:
> 0. No problems occurred.
> 1. Generic error code.
> 2. Parse error---for instance, when parsing command-line options, the .wgetrc or .netrc...
> 3. File I/O error.
> 4. Network failure.
> 5. SSL verification failure.
> 6. Username/password authentication failure.
> 7. Protocol errors.
>8 Server issued an error response.
>
> With the exceptions of 0 and 1, the lower-numbered exit codes take
> precedence over higher-numbered ones, when multiple types of errors
> are encountered.
Источник: wget man page
0
Если вы не возражаете против использования CURL, вот небольшой C программа, которая использует функцию check_url
для проверки URL. Функция возвращает 1
, если запрос выполнен успешно, и 0
в противном случае.
Invoke, как:
./a.out http://example.com
#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.h>
int check_url(char *url)
{
CURL *curl;
CURLcode response;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
/* don't write output to stdout */
curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
/* Perform the request */
response = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return (response == CURLE_OK) ? 1 : 0;
}
int main(int argc, char *argv[])
{
int result = check_url(argv[1]);
if (result)
printf("Success!\n");
else
printf("Failed...\n");
return 0;
}
Смежные вопросы
- 1. Как проверить, существует ли папка над https
- 2. Существует понятие стирания типа на языке C?
- 3. C# Как проверить, существует ли URL-адрес?
- 4. Как проверить, существует ли функция на window.external
- 5. Как проверить, существует ли файл в c
- 6. Как проверить, существует ли массив в C#?
- 7. Как проверить, существует ли каталог в C
- 8. Как проверить, существует ли дата C
- 9. Как проверить, существует ли домен
- 10. Как проверить, существует ли функция
- 11. Как проверить, существует ли файл на C++ для программы Windows?
- 12. Как проверить, существует ли значение на карте C++
- 13. Как проверить, существует ли деление на ноль в c
- 14. Как проверить, существует ли файл на C++ портативным способом?
- 15. Как проверить, существует ли целое число в переменной на C++?
- 16. C# - Проверить, существует ли файл и загрузить
- 17. Как проверить, существует ли «Thread»?
- 18. Как проверить, существует ли каталог на PHP?
- 19. Как проверить, существует ли Ringtone?
- 20. Как проверить, существует ли putExtra?
- 21. Как проверить, существует ли путь?
- 22. Как проверить, существует ли ContextRelativeResource?
- 23. Как проверить, существует ли сеанс?
- 24. Как проверить, существует ли локализация?
- 25. Как проверить, существует ли браузер?
- 26. Как проверить, существует ли файл?
- 27. Как определить, существует ли строка на другом языке. (Не ASCII)
- 28. Как определить, существует ли слово на английском языке, используя nltk
- 29. Как проверить, существует ли объект?
- 30. проверить, существует ли каталог в сети C#
Технически говоря, любой URL "существует" до тех пор, как вы пишете его где-нибудь. Я подозреваю, что вам действительно нужно проверить, возвращает ли запрос 200 HTTP-код, верно? – SirDarius
Что значит, существует? Найти URL в строке? или выяснить, действительно ли URL-адрес действителен и не возвращает 404? Единственный способ проверить, является ли он действительным ресурсом, - это на самом деле нажать на URL (например, выполнить HTTP-запрос) и проверить наличие ошибок. –
Я имел в виду, если сайт существует. Да, это не возвращает 404 или другие ошибки. –