2012-01-18 16 views
4

私はポストデータとCOOKIESを送信するプログラムを作成しようとしています。クッキーの追加部分がクッキーを正しく追加していないようです...C++ Cookieの追加と送信

#include <stdio.h> 
#include <string.h> 

#include <curl/curl.h> 

int main(int argc, char *argv[]) 
{ 
    CURL *curl; 
    CURLcode res; 

    struct curl_httppost *formpost=NULL; 
    struct curl_httppost *lastptr=NULL; 
    struct curl_slist *headerlist=NULL; 
    static const char buf[] = "Expect:"; 

    curl_global_init(CURL_GLOBAL_ALL); 


    /* Fill in the nick field */ 
    curl_formadd(&formpost, 
       &lastptr, 
       CURLFORM_COPYNAME, "nick", 
       CURLFORM_COPYCONTENTS, "nichnameofxxx", 
       CURLFORM_END); 

    /* Fill in the pass field */ 
    curl_formadd(&formpost, 
       &lastptr, 
       CURLFORM_COPYNAME, "pass", 
       CURLFORM_COPYCONTENTS, "passwordofxxx", 
       CURLFORM_END); 

    /* Other fields like ID */ 
    curl_formadd(&formpost, 
       &lastptr, 
       CURLFORM_COPYNAME, "ProfileID", 
       CURLFORM_COPYCONTENTS, "77820", 
       CURLFORM_END); 

    /* Fill in the submit field too, even if this is rarely needed */ 
    curl_formadd(&formpost, 
       &lastptr, 
       CURLFORM_COPYNAME, "submit", 
       CURLFORM_COPYCONTENTS, "send", 
       CURLFORM_END); 


    curl = curl_easy_init(); 
    /* initalize custom header list (stating that Expect: 100-continue is not 
    wanted */ 

    headerlist = curl_slist_append(headerlist, buf); 

    //Cookies here... it's a part of the Header 
    headerlist = curl_slist_append(headerlist, "Cookie: name=xxx; name2=xxx"); 

    if(curl) 
    { 

    // what URL that receives this POST 

    curl_easy_setopt(curl, CURLOPT_URL, "http://www.mything.org/index.php?id=log2"); 

    if ((argc == 2) && (!strcmp(argv[1], "noexpectheader"))) 
     curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); 

    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); 
    res = curl_easy_perform(curl); 

    curl_easy_cleanup(curl); 
    curl_formfree(formpost); 
    curl_slist_free_all (headerlist); 

    } 
    return 0; 
} 

何でもよろしくお願いします!

+0

適切にクッキーを追加しないことで、あなたは何をすべきかそれはどういう意味ですか?何が起こるのですか?ビルド中にエラーがありますか?実行中にエラーが発生しましたか?デバッガのコードを踏んで何が起こったのか見ましたか? –

+0

私はあなたが正しいクッキーを持っている場合にのみ、トピックを変更することができますテストウェブサイトがあります。私はウェブサイトをテストし、クッキーをうまくキャッチします。したがって、間違っているのはプログラムコードだけです... –

+0

そして、なぜあなたのブラウザはlibcurlと同じ場所にクッキーを保存すると思いますか? –

答えて

11

最初のスタート「クッキーエンジンは」、これはで行われます。代わりに、明示的にHTTPヘッダーを設定するので

curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); 

、CURLOPT_COOKIEでクッキーを設定します。

curl_easy_setopt(curl, CURLOPT_COOKIE, "name=xxx; name2=xxx;"); 
+1

私はそれを使用しました。私は、2番目のステートメントがクッキーエンジンを起動してクッキーを送信するのに十分であると非常に確信しています。 –

+0

あなたは正しいです、abhishekシャンデル。 –

関連する問題