GETとPOSTのlibcurl(HTTP1.1)に基づいて、

する#include <stdio.hに> 
する#include <カール/ curl.h> BOOLのgetURL(CHAR * 名)
{ 
    CURL * カール; 
    CURLcode RES;                  
    FILE * FP;
     IF((FPは、fopenを(ファイル名= " Wを"))= NULL =)   // 結果ファイルストレージを返し、返しfalseにストラクト * = curl_slistヘッダをNULL;
    // ヘッダ= curl_slist_append(ヘッダ、 "同意: -エージェント-007"); 
    = curl_easy_initカール()に;     //は、初期化のIF (カール)
    {


         
    
        // curl_easy_setoptの(カール、CURLOPT_PROXY、 "10.99.60.201:8080"); //  
        curl_easy_setoptの(カール、CURLOPT_HTTPHEADER、ヘッダ); // プロトコルヘッダ変更 
        curl_easy_setoptの(カール、CURLOPT_URLに、http://www.nengyouyun.cnを?/ユーザー/ getAppversionnew2 APPTYPE = H5C899DDC " );
   // curl_easy_setopt(カール、CURLOPT_URL、" HTTP:// localhostの/ 「); 
        ; curl_easy_setopt(カール、CURLOPT_WRITEDATA、FP)// 出力HTMLデータは、メインポイントFPに戻しますファイル 
        curl_easy_setoptの(カール、CURLOPT_HEADERDATA、FP); //は、HTTPヘッダーファイルにFPポイントに出力を返す 
        RES = curl_easy_perform(カール);    // 実行される
        場合(!RES = 0 ){ 

            curl_slist_free_all(ヘッダ)。
            curl_easy_cleanup(カール)。
        } 
        FCLOSE(FP)。
        返す ; 
    } 
} 
BOOL postUrl(チャー *のファイル名)
{ 
    CURL * カール。
    CURLcode解像度; 
    FILEの *のFP; 
    
    構造体 curl_httppost * formpost = NULL;
    構造体 curl_httppost * lastptr = NULL;    

    もし((FP =のfopen(ファイル名、" W "))== NULL)
        返す ; 
    カール = curl_easy_init()。
    もし(カール)
    { 
       // curl_easy_setopt(カール、CURLOPT_COOKIEFILE、 "cookie.txt")。// 指定クッキー文件

        curl_formadd(&formpost、&lastptr、CURLFORM_COPYNAME、" 画像"、CURLFORM_COPYCONTENTS、" 1.JPG " 、CURLFORM_END)。
       //   curl_easy_setopt(カール、CURLOPT_HTTPPOST、formpost)。     // POST -liuzhenbo
         // curl_easy_setopt(カール、CURLOPT_POSTFIELDS、 "&logintype = UID&U = xieyan&PSW = xxx86")。    // curl_easy_setopt(カール、CURLOPT_PROXY、 "10.99.60.201:8080"); 
        curl_easy_setopt(カール、CURLOPT_URL、" http://www.nengyouyun.cn/user/getAppversionnew2?apptype=H5C899DDC ");    // URLの指定 
        (curl_easy_setoptをカール、CURLOPT_HTTPPOST、formpost);      // POST -liuzhenbo 
        curl_easy_setoptの(カール、CURLOPT_WRITEDATA、FP);   // HTTPボディデータ-liuzhenbo 
        curl_easy_setopt(カール、CURLOPT_HEADERDATA、FP)の; //は、ファイルへのHTTPヘッダFP点を返します 
        = RESのcurl_easy_perform(カール); 
        curl_easy_cleanup(カール); 
        curl_formfree(formpost); 
    }
    FCLOSE(FP)。
    返す ; 
} 
INTメイン(ボイド
{ 
    のgetURL(" 取得" )。
    postUrl(" ポスト" )。
}

GET HTTPヘッダーを受信するサーバは、送信されました:

HTTP / 1.1  200  
サーバー:nginxの / 1.100 (Ubuntuの)
日付:月、17年06月2019  113445 GMT 
コンテンツ -Type:アプリケーション/ JSON;のcharset = UTF- 8 
転送 - エンコーディング:チャンク
保つ:接続 - アライブ
X -アプリケーション・コンテキスト:クラウドゲートウェイ。7001

POSTメソッドは、HTTPヘッダを受信し、サーバから送られてきました。

HTTP / 1.1  100は続行

HTTP / 1.1  200  
nginxの:サーバー / 1.100 (Ubuntuの)
日付:月、17年06月2019  113445 GMT 
コンテンツ -Type:アプリケーション/ JSON;のcharset = UTF- 8 
転送 - エンコーディング:チャンク
保つ:接続 - アライブ
X -アプリケーション・コンテキスト:クラウドゲートウェイ。7001

注:使用カールHTTP / 1.1プロトコル、POSTデータが1024バイトよりも大きいとすると、カールが直接POSTリクエストを開始しませんが、2つのステップに分割されます。(私は鍵がリソースを節約することだと思います)

 次のようにプロセスは以下のとおりです。

     、100-続ける質問サーバーを使用してデータを受け入れる意志がある:(1)期待を含む、要求を送信します

     (2)100-続けるサーバーを受信した後、データPOSTサーバーに、応答を返します

おすすめ

転載: www.cnblogs.com/liuzhenbo/p/11041872.html