使用libcurl提交POST請求

2021-06-22 05:29:17 字數 2419 閱讀 8408

**:

最近在學習libcurl,並利用它提交post請求,可是返回的響應總是無從驗證該次post請求是否成功提交了。

1. 先看下根據firebug提交的一次成功的請求,這裡以login我喜歡上的xiami為例,嘻嘻~

1.1 本次post請求的http互動

1.3 經server端redirect的get

2. ok,接下來看下使用libcurl向xiami傳送post請求

2.1 使用libcurl的大概流程

curl_easy_init()

curl_easy_setopt()

curl_easy_perform()

curl_easy_cleanup()

呵呵~超簡單的吧,具體的意思這裡就不詳細說了,參見

2.2 再來看簡單的**

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

#define posturl ""

#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

*userp);  

intmain(

intargc, 

char

*argv)   

curl = curl_easy_init();  

curl_easy_setopt(curl, curlopt_url, posturl);  

curl_easy_setopt(curl, curlopt_postfields, postfields);  

curl_easy_setopt(curl, curlopt_writefunction, write_data);  

curl_easy_setopt(curl, curlopt_writedata, fptr);  

curl_easy_setopt(curl, curlopt_post, 1);  

curl_easy_setopt(curl, curlopt_verbose, 1);  

curl_easy_setopt(curl, curlopt_header, 1);  

curl_easy_setopt(curl, curlopt_followlocation, 1);  

curl_easy_setopt(curl, curlopt_cookiefile, "/users/zhu/cprojects/curlposttest.cookie"

);  

res = curl_easy_perform(curl);  

curl_easy_cleanup(curl);  

}  size_t

write_data(

void

*buffer, 

size_t

size, 

size_t

nmemb, 

void

*userp)   

2.3 說下這當中的一些操作吧

curlopt_url: url位址

curlopt_postfields: post引數

curlopt_writefunction: 對返回的資料進行操作的函式位址

curlopt_writedata: 設定writefunction的第四個引數值

curlopt_post: 設定為非0表示本次操作為post

curlopt_verbose: 設定為非0在執行時列印請求資訊

curlopt_header: 設定為非0將響應頭資訊同響應體一起傳給writefunction

curlopt_followlocation: 設定為非0,響應頭資訊location

curlopt_cookiefile: 哈哈,這個實在是太重要了,我之前嘗試了好多次沒法驗證該次post是否成功的原因就是沒有設定這個羅。設定對應的cookiefile路徑,該路徑檔案並不一定需要在物理磁碟上實際存在

2.4 接下來是成功返回的結果哦,呵呵,下面截圖當中的zhuzhu可以為證,不好意思,xiami上取了個比較cuo的名字~

**:

android 使用post 提交

1 使用post 方式提交時不要把須要傳遞的引數寫在url 中,一定要使用 basicnamevaluepair 這個類來完畢 opt discovery 在使用post 方式提交的時候不要把後面的引數直接傳遞過去。一定要使用下面的方式 設定http post請求引數必須用namevaluepair...

關於libcurl模擬提交form

因為本人對web機制了解較少,在使用c libcurl中遇到了很多問題。主要的解決方式 1,在網頁原始碼中找到提交form的定位。也就是網頁檔案對應form中的action屬性。往往都是提交到jsp或者php等指令碼中執行的,而不是直接提交到本網頁。2,要注意http頭。http頭的不同會引起網頁的...

Django 使用jquery提交post請求

使用django框架編寫web專案時,在前端頁面中使用jquery提交post請求,遇到到了一些問題,在此記錄學習的過程 img.html document ready function 使用post提交 問題 是django在處理post請求時出現403錯誤 原文1 解決方法 在settings....