c裡面使用libcurl庫實現傳送post並獲取post到的內容
以下是c程式碼的實現:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #define POSTURL "http://www.xiami.com/member/login" #define POSTFIELDS "[email protected]&password=mypassword&autologin=1&submit=登 錄&type=" #define FILENAME "curlposttest.log" size_t write_data(void* buffer,size_t size,size_t nmemb,void *stream) { FILE *fptr = (FILE*)stream; fwrite(buffer,size,nmemb,fptr); return size*nmemb; } int main(int argc,char *argv[]) { CURL *curl; CURLcode res; FILE* fptr; struct curl_slist *http_header = NULL; if ((fptr = fopen(FILENAME,"w")) == NULL) { fprintf(stderr,"fopen file error:%s\n",FILENAME); return -1; } curl = curl_easy_init(); if (!curl) { fprintf(stderr,"curl init failed\n"); return -1; } curl_easy_setopt(curl,CURLOPT_URL,POSTURL); //url地址 curl_easy_setopt(curl,CURLOPT_POSTFIELDS,POSTFIELDS); //post引數 curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); //對返回的資料進行操作的函式地址 curl_easy_setopt(curl,CURLOPT_WRITEDATA,fptr); //這是write_data的第四個引數值 curl_easy_setopt(curl,CURLOPT_POST,1); //設定問非0表示本次操作為post curl_easy_setopt(curl,CURLOPT_VERBOSE,1); //列印除錯資訊 curl_easy_setopt(curl,CURLOPT_HEADER,1); //將響應頭資訊和相應體一起傳給write_data curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1); //設定為非0,響應頭資訊location curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"/Users/zhu/CProjects/curlposttest.cookie"); res = curl_easy_perform(curl); if (res != CURLE_OK) { switch(res) { case CURLE_UNSUPPORTED_PROTOCOL: fprintf(stderr,"不支援的協議,由URL的頭部指定\n"); case CURLE_COULDNT_CONNECT: fprintf(stderr,"不能連線到remote主機或者代理\n"); case CURLE_HTTP_RETURNED_ERROR: fprintf(stderr,"http返回錯誤\n"); case CURLE_READ_ERROR: fprintf(stderr,"讀本地檔案錯誤\n"); default: fprintf(stderr,"返回值:%d\n",res); } return -1; } curl_easy_cleanup(curl); }
相關推薦
c裡面使用libcurl庫實現傳送post並獲取post到的內容
以下是c程式碼的實現: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #define POSTURL
C/C++使用libcurl庫實現post圖片的兩種方式
一.直接上傳檔案方式將圖片檔案跟在引數的後面,這裡的curl和引數需要根據自己的需要修改 char *url=" "; CURL *pCurl = NULL;CURLcode res;struct curl_slist *headerlist =
C/C++使用libcurl庫發送http請求(get和post可以用於請求html信息,也可以請求xml和json等串)
網絡連接 get 編譯 eas views vs2015 return tar linux C++要實現http網絡連接,需要借助第三方庫,libcurl使用起來還是很方便的 環境:win32 + vs2015 如果要在Linux下使用,基本同理 1,下載
C/C++使用libcurl庫傳送http請求
C++要實現http網路連線,需要藉助第三方庫,libcurl使用起來還是很方便的 環境:win32 + vs2015 如果要在linux下使用,用cmake編譯,使用基本同理 1,下載編譯libcurl 下載curl原始碼,找到vs工程,按照x86 x64 並對
C++藉助curses庫實現俄羅斯方塊
主要要實現如下幾個功能:方塊的移動控制、方塊變形、判定方塊是否接觸邊界和進行方塊堆積、對方塊進行消除。 1.方塊的移動控制上下左右四個方向上-->變形,下-->加速下落,左-->向左移動,右-->向右移動注意在移動的時候,還要判定是否接觸邊界,特別是向下移動,除了需要確定是否接觸底部
libcurl庫的http get和http post使用【轉】
一、libcurl中的http get使用方法 1. 為什麼要使用libcurl 1) 作為http的客戶端,可以直接用socket連線伺服器,然後對到的資料進行http解析,但要分析協議頭,實現代理…這樣太麻煩了。 2) libcur
C++ 使用openssl庫實現 DES 加密——CBC模式 && RSA加密——公加私解——私加公解
之前工作上需要用C++把軟體生成的使用者序列號用des加密cbc的模式,加密後為二進位制,轉化為十六進位制,然後提供給java寫的授權碼管理平臺。 java平臺會根據使用者序列號,生成一個授權碼,授權碼是用rsa 私加公解的模式加密的,加密後為二進位制,然後轉為safeBase64格式。授權碼拿來在C++
Libcurl庫使用傳送單個檔案及多個檔案demo
demo: #include <stdio.h> #include <string.h> #include <curl/curl.h> #include <s
C++ 用libcurl庫進行http 網路通訊程式設計
五、libcurl使用的HTTP訊息頭 當使用libcurl傳送http請求時,它會自動新增一些http頭。我們可以通過CURLOPT_HTTPHEADER屬性手動替換、新增或刪除相應 的HTTP訊息頭。 Host http1.1(大部分http1.0)版本都要求客戶端請求提供這個
C/C++ 用libcurl庫進行http通訊網路程式設計
五、libcurl使用的HTTP訊息頭 當使用libcurl傳送http請求時,它會自動新增一些http頭。我們可以通過CURLOPT_HTTPHEADER屬性手動替換、新增或刪除相應 的HTTP訊息頭。 Host http1.1(大部分http1.0)版本都要求客戶端請求提供這個資
C++用libcurl庫進行http通訊網路程式設計
//採用CURLOPT_RESUME_FROM_LARGE 實現檔案斷點續傳功能 #include <stdlib.h> #include <stdio.h> #include <sys/stat.h> #include <curl/curl.h> //這個
C呼叫libcurl庫函式 查詢全文搜尋引擎 Elasticsearch
//執行在ubuntu64系統下//curles.c#include <stdio.h>#include <curl/curl.h>#include <string.h>size_t write_data(void *ptr, size_t
C#基於Quartz.NET實現任務排程並部署Windows服務
一、Quartz.NET介紹 Quartz.NET是一個強大、開源、輕量的作業排程框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改寫,可用於winform和asp.net mvc、.Net Core應用中。它靈活而不復雜。你能夠用它來為執行一個作業而建立簡單的或複雜的作業
hibernate實現表聯查並獲取某個欄位的最大值(隨筆)
最近試用hibernate實現三表連線查詢並分組顯示某個欄位的最大值,在mysql中語句可以執行,改成hql無法執行,遂寫下隨筆以記錄 mysql中查詢,可以查詢到相應的結果 改寫成hql語句 "select o.equipment.equId, o.olderName
C#呼叫批處理(bat)檔案,並獲取執行批處理(bat)檔案後返回值
/// /// 執行BAT檔案 /// /// csv檔案引數 /// bat檔案執行返回值 static string execBAT(string fileName) { ProcessStartInfo pro = new System.Diagnostics.ProcessStartInf
函式實現 -- 分割字串,並獲取最後一段字串
在寫myshell的時候, 發現系統shell會顯示當前目錄, 也想實現這樣的效果, 但是我只找到了一個函式 char *getcwd( char *buffer, int maxlen ); //功 能:獲取當前工作目錄 //引數說明:getcwd()會將當
【轉】Django中使用POST方法獲取POST數據
class 需要 request www ict .html bsp 請求 post 1.獲取POST中表單鍵值數據 如果要在django的POST方法中獲取表單數據,則在客戶端使用JavaScript發送POST數據前,定義post請求頭中的請求數據類型:
Python爬蟲:lxml模組分析並獲取網頁內容
運用css選擇器: # -*- coding: utf-8 -*- from lxml import html page_html = ''' <html><body> <input id="input_id" value="input value" nam
PHP CURL POST無法獲取響應內容的問題
現象: 使用PHP的CURL相關函式進行POST,當要POST的引數內容長度超過1024時,將無法獲得response的資料。 即: curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLO
使用BS4解析網頁內容 並獲取指定內容
# -*- coding: utf-8 -*- import sys import requests reload(sys) sys.setdefaultencoding("utf-8") # 使用