2013-10-09 1 views
0

Ive проблема и я не могу понять, как я могу решить следующую проблему: Я бы хотел отправить несколько запросов http на ось. Вот мой код:отправить http-запросы, сохранить сессию вживую: C/C++ с cURL (axus camera)

#include <stdio.h> 
#include <curl/curl.h> 

int main(void) 
{ 
    CURL *curl; 
    CURLcode res; 

    curl = curl_easy_init(); 
    if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "http:/root:[email protected]"); 
    /* example.com is redirected, so we tell libcurl to follow redirection */ 
// curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); 
    res=curl_easy_perform(curl); 
    curl_easy_setopt(curl, CURLOPT_URL, "http:/IPADDRESS/axis-cgi/com/ptz.cgi?move=left"); 
    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl); 
    /* Check for errors */ 
    if(res != CURLE_OK) 
     fprintf(stderr, "curl_easy_perform() failed: %s\n", 
       curl_easy_strerror(res)); 

    /* always cleanup */ 
    curl_easy_cleanup(curl); 
    } 
    return 0; 
} 

Все, что я хочу сделать в этом примере, чтобы сохранить свою сессию в живых после того, как вошли в IPaddress, а затем отправить заказ «шаг = влево» к этому очень IP-адрес. Когда я выполнить эту программу, я получил эти сообщения:

<HTML> 
<HEAD> 
    <META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT"> 
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Refresh" CONTENT="0; URL=/view/index.shtml"> 
Your browser has JavaScript turned off.<br>For the user interface to work effectively, you must enable JavaScript in your browser and reload/refresh this page. 
    </noscript> 
</HEAD> 
<BODY> 
</BODY> 
</HTML> 

<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD> 
<BODY><H1>401 Unauthorized</H1> 
Your client does not have permission to get URL /axis-cgi/com/ptz.cgi from this server. 
</BODY></HTML> 

Я предполагаю, что я не был даже вошли в IPaddress ...

Я никогда не использовал этот вид метода, прежде чем ... Вы можете помогите мне с этим?

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

+0

Похоже, что вы должны использовать ' curl_multi_ * 'и включить' CURLMOPT_PIPELINING'. Вам нужно зарегистрировать 'CURL *' с 'CURLM *'. Я нашел пример [здесь] (http://darcs.net/release/src/hscurl.c). – jxh

ответ

1

Вам нужно добавить эти два варианта:

curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt"); 
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt"); 

Из документации:

CURLOPT_COOKIEFILE

Передайте указатель на строку, оканчивающуюся нулевым в качестве параметра. Он должен содержать имя вашего файла, содержащего данные cookie для чтения. Данные cookie могут быть в формате данных файлов cookie Netscape/Mozilla или просто регулярны Заголовки HTTP-стиля, сбрасываемые в файл.

Учитывая пустой или несуществующий файл или пропускания пустой строки («»), эта опция позволит печенье для этого завитка ручки, что делает его понимать и анализировать полученный куки, а затем использовать соответствующие кук в будущем Запросы.

Если вы используете эту опцию несколько раз, вы просто добавляете больше файлов в . В последующих файлах будет добавлено больше файлов cookie.

CURLOPT_COOKIEJAR

Передайте имя файла как символ *, ноль прекращается. Это приведет к тому, что libcurl напишет все встроенные файлы cookie в указанный файл, когда вызывается curl_easy_cleanup (3). Если cookie не известен, файл не будет создан . Укажите «-», чтобы вместо этого файлы cookie были записаны в стандартный вывод. С помощью этой опции также разрешены файлы cookie для этого сеанса, поэтому, если вы используете для пример, следуйте за местоположением, и оно будет автоматически отправлено соответствующим образом. соответственно.

Если файл куки не может быть создан или записывается (когда curl_easy_cleanup (3) называется), Libcurl не будет и не может сообщить об ошибке для этого.Использование CURLOPT_VERBOSE или CURLOPT_DEBUGFUNCTION будет получить предупреждение, чтобы показать, но это только видимая обратная связь вы получите об этом, возможно, смертельной ситуации

Узнайте больше на сайте: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

Смежные вопросы