する#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.10。0 (Ubuntuの) 日付:月、17年06月2019 11:34:45 GMT コンテンツ -Type:アプリケーション/ JSON;のcharset = UTF- 8 転送 - エンコーディング:チャンク 保つ:接続 - アライブ X -アプリケーション・コンテキスト:クラウドゲートウェイ。7001
POSTメソッドは、HTTPヘッダを受信し、サーバから送られてきました。
HTTP / 1.1 100は続行 HTTP / 1.1 200 nginxの:サーバー / 1.10。0 (Ubuntuの) 日付:月、17年06月2019 11:34:45 GMT コンテンツ -Type:アプリケーション/ JSON;のcharset = UTF- 8 転送 - エンコーディング:チャンク 保つ:接続 - アライブ X -アプリケーション・コンテキスト:クラウドゲートウェイ。7001
注:使用カールHTTP / 1.1プロトコル、POSTデータが1024バイトよりも大きいとすると、カールが直接POSTリクエストを開始しませんが、2つのステップに分割されます。(私は鍵がリソースを節約することだと思います)
次のようにプロセスは以下のとおりです。
、100-続ける質問サーバーを使用してデータを受け入れる意志がある:(1)期待を含む、要求を送信します
(2)100-続けるサーバーを受信した後、データPOSTサーバーに、応答を返します