#c #http #request
#c #http #запрос
Вопрос:
Вероятно, на этот вопрос уже был дан ответ, но с моими текущими знаниями я не могу найти никаких ответов, объясняющих, как это делается, несмотря на долгое время поиска, так что вот оно:
У меня есть датчик, который отправляет информацию через сокет, подключенный к определенному порту. Я знаю, как подключиться к сокету, однако датчик изменяет порт из каждого соединения, и способ получить текущий номер порта — сделать HTTP-запрос и прочитать порт из ответа. Все параметры для датчика также изменяются с использованием HTTP, поэтому мне это нужно для многих вещей.
Это конкретная команда, которую мне нужно выполнить (взято из документации датчика):
Query: http://<sensor IP address>/cmd/request_handle_tcp?packet_type=Bamp;watchdog=offamp;start_angle=0
Reply: {
"port":39731,
"handle":"s22",
"error_code":0,
"error_text":"success"
}
В python это просто делается с помощью следующего кода:
import requests
response = requests.get(f"http://{ip}/cmd/request_handle_tcp?packet_type=Bamp;watchdog=offamp;start_angle=0").json()
handle = response["handle"]
port = response["port"]
Но как это делается на C?
Я надеюсь, что это объясняет вопрос, код Python — это просто, если кто-то знает как Python, так и C, вопрос, надеюсь, должен быть понятен даже без примера кода python.
Комментарии:
1. Используйте библиотеку, подобную libcurl.
2. Да, libcurl — это правильный путь, и в нем есть много примеров, см., Например curl.haxx.se/libcurl/c/getinmemory.html .
3. @kaylum Я могу использовать команду curl в командной строке, однако, когда я создаю файл c, я получаю ошибку «curl / curl.h: нет такого файла или каталога». Как мне связать библиотеку curl с моей программой? Я не могу найти библиотеку curl на своем ПК с Windows, но команды командной строки cmd все еще работают.
4. Заголовки C не установлены или не найдены. В зависимости от дистрибутива Linux вы можете сделать что-то вроде
apt-get install libcurl-dev
илиdnf install libcurl-devel
. Если это необычный или самодельный Linux, вам, вероятно, придется создавать libcurl из исходного кода.