1. 程式人生 > >C語言 如何用http post方式 上傳json資料

C語言 如何用http post方式 上傳json資料

What :C語言 如何用post方式 上傳json資料.
Piont:C語言Socket實現HTTP協議,json格式資料組包。

1,C語言Socket實現HTTP POST+json格式資料
按照HTTP協議傳送request。
http POST 報文格式
http 報文是面向文字的。
報文分為:請求報文和響應報文
請求報文由:請求行,請求頭部,空行和請求資料四個部分組成。
POST:當客戶端給伺服器提供資訊較多時可以使用POST方法,POST方法將請求引數
封裝在HTTP請求資料中,以名稱/值的形式出現,可以傳輸大量資料,可用來傳送檔案。
請求頭部:
由關鍵字/值對組成,每行一對,用:分隔,請求頭部通知伺服器有關於客戶端請求的資訊
典型的請求頭有:
User-Agent,Accept,Host.
空行
最後一個請求頭之後是一個空行,傳送回車符和換行符,通知伺服器以下不再有請求頭。
對於一個完成的Http請求來說,空行是必須的,否則伺服器會認為本次請求的資料尚未完全傳送到伺服器,處於等待狀態。
請求資料:
POST方法適用於需要客戶填寫表單的場合,與請求資料相關的最常用的請求頭是
content-Type和Content-Length;

cJSON庫(構建json與解析json字串)-c語言

二、cJSON庫之組包

1、json的資料結構

c語言中json資料是採用連結串列儲存的
typedef struct cJSON {
struct cJSON *next,*prev;// 陣列 物件資料中用到
struct cJSON *child;// 陣列 和物件中指向子陣列物件或值
int type;// 元素的型別,如是物件還是陣列
char *valuestring;// 如果是字串
int valueint; // 如果是數值
double valuedouble;// 如果型別是cJSON_Number
char *string;// The item’s name string, if this item is the child of, or is in the list of subitems of an object.
} cJSON;

三、cJSON使用
{
“name”: “Jack (\”Bee\”) Nimble”,
“format”: {
“type”: “rect”,
“width”: 1920,
“height”: 1080,
“interlace”: false,
“frame rate”: 24
}
}
“name”: “Jack (\”Bee\”) Nimble”,
“format”: {
“type”: “rect”,
“width”: 1920,
“height”: 1080,
“interlace”: false,
“frame rate”: 24
}
}

1、字串解析成json結構體
1):講字串解析成json結構體。
cJSON *root = cJSON_Parse(my_json_string);

2):獲取某個元素
cJSON *format = cJSON_GetObjectItem(root,”format”);
int framerate = cJSON_GetObjectItem(format,”frame rate”)->valueint;
int framerate = cJSON_GetObjectItem(format,”frame rate”)->valueint;

3):講json結構體轉換成字串
char *rendered=cJSON_Print(root);

4):刪除
cJSON_Delete(root);

2:構建一個json結構體
cJSON *root,*fmt;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root, “name”, cJSON_CreateString(“Jack (\”Bee\”) Nimble”));
cJSON_AddItemToObject(root, “format”, fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,”type”, “rect”);
cJSON_AddNumberToObject(fmt,”width”, 1920);
cJSON_AddNumberToObject(fmt,”height”, 1080);
cJSON_AddFalseToObject (fmt,”interlace”);
cJSON_AddNumberToObject(fmt,”frame rate”, 24)
out =cJSON_Print(root);
printf(“%s\n”,out);
cJSON_Delete(root);
free(out);
“`

POST ,json資料實現:
C語言 http socket 程式設計

1,用C語言http socket 程式設計以post步驟傳輸資料的實質和實現方法

需首先實現:寫一個關於http協議的socket程式設計基礎函式庫

HTTP報文段是這麼寫的:

POST URL HTTP/1.1\r\n
若干HTTP選項\r\n
\r\n
POST資料段(以\r\n分隔)

http報文頭:
char *header = “POST / HTTP/1.1\n”
“Host: 192.168.9.20:8080\n”
“Content-Length: 62\n\n”
“AuthenticateUser=UserID&AuthenticatePassword=PWD&Submit=\n”;

不論pos還是get的實質就是一段資料,這些資料你可以用抓包方式獲取,還可以使用原始碼的伺服器自己測試得到

pos還是get的實質就是一段資料,這些資料你可以用抓包方式獲取,還可以使用原始碼的伺服器自己測試得到
總之以上就是屬於http協議的部分,因為http是基於tcp的,所以你用c完全可以寫一個socket的tcp,然後用tcp再
封裝成http的即可

所有的資料都寫完後,在該Socket上進行響應報文的接收。最後解析一下響應報文,檢查響應狀態就可以了。

C語言實現HTTP POST資料

相關推薦

C語言 如何用http post方式 json資料

What :C語言 如何用post方式 上傳json資料. Piont:C語言Socket實現HTTP協議,json格式資料組包。 1,C語言Socket實現HTTP POST+json格式資料 按照HTTP協議傳送request。 http POST

使用最原始的http-post方式圖片 ,工具類已封裝 可直接使用

// 上傳工具類的 .h檔案 #import <Foundation/Foundation.h> @interface IMPhotoPostTool : NSObject + (NSMutableURLRequest *)upload:(NSString *

Http multipart/form-data多引數Post方式資料

關於multipart/form-data格式的上傳,網上有大量的解決文章,這裡,我們使用HttpURLConnection 來完成 POST /test HTTP/1.1 Accept-Language: zh-CN,zh;q=0.8 Accept:

[轉載]httppost方式一個檔案,構造其請求頭和訊息報文

  首先客戶端連結 192.168.24.56 後, 應該傳送如下http 請求:   Accept: text/plain, */*   Accept-Language: zh-cn   Host: 192.168.24.56  Content-Type:multipart/form-data;bo

AJAX POST方式檔案到後臺和下載後臺傳來的檔案

ajax 下載 原本ajax是不能下載檔案的,原因:因為response,一般請求瀏覽器是會處理伺服器輸出的response,例如生成png、檔案下載等,然而ajax請求只是個“字元型”的請求,即請求的內容是以文字型別存放的。檔案的下載是以二進位制形式進行的,雖然可以讀取到返

HTTP POST檔案請求解析

文章目錄 前言 POST上傳檔案 前言 最早的HTTP POST是不支援檔案上傳的,給程式設計開發帶來很多問題。但是在1995年,ietf出臺了rfc1867,也就是《RFC 1867 -Form-based File Upload

關於requests Post方式檔案

背景 前兩天需要呼叫一個介面,使用post方式上傳檔案。於是使用Python的requests進行傳送post請求,但是一直報伺服器500的錯誤,感覺很納悶,折磨我好久之後才注意到之前使用的post請求只是攜帶一些欄位,而這次是需要向介面上傳檔案。 步驟 先這樣,,,再這樣,,,

.net模擬http post請求檔案

http://blog.csdn.net/dreamparks/article/details/43149845 public void SendByApi(string url, Stream postedStream, string fileName, string

ASP.NET 利用post方式檔案

幾經努力,終於實現了檔案上傳,不使用asp.net元件,而使用傳統asp檔案模板方式,方法如下: 上傳檔案介面模板:(upfile.htm)HTML如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w

python 通過post方式檔案到php伺服器

看了網上很多程式碼,都沒有說如何具體的使用poster,試了兩天,終於成功了 通過python呼叫php實現了檔案上傳 與大家分享一下:     首先要通過pip安裝poster(easy_install 也是一樣的):

php實現curl請求以post方式圖片檔案

在呼叫第三方api介面時,有時會遇到通過http協議上傳圖片,以下是一個微信公眾平臺新增永久素材的例子;php程式碼: /* 使用curl函式 */ $url = "https://api.weixin.qq.com/cgi-bin/material/add_m

Java的Post方式檔案

不說廢話,直接上程式碼: public void moveWaterMark(String fileName) { try { File imgFile =

使用Python傳送http post請求檔案

可以使用第三方模組poster,使用easy_install 安裝方法如下 easy_instll poster 會自動安裝poster模組,安裝成功後,可以看到在poster egg檔案在site package下 這裡注意,根據官方說法:Because this dis

http post檔案機制

我們知道HTTP協議採用“請求-應答”模式,當使用普通模式,即非KeepAlive模式時,每個請求/應答客戶和伺服器都要新建一個連線,完成之後立即斷開連線(HTTP協議為無連線的協議);當使用Keep-Alive模式(又稱持久連線、連線重用)時,Keep-Alive功能使客戶端到伺服器端的連線持續有效,當出現

xUtils怎麽post請求json數據

測試 ces span 上傳 con utf-8 test exceptio cep InfoSmallCodeBinding smallCode = new InfoSmallCodeBinding(); smallCode.setSma

C語言cJSON庫的使用,解析json資料格式 C語言cJSON庫的使用,解析json資料格式

C語言cJSON庫的使用,解析json資料格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html     對於c語言來說是沒有字典這樣的結構的,所以對於解析json格式的資料來說不是那麼好解析,但是有些時候又會需要處理這樣的資料格式,這裡就有

from 表單post方式提交,返回json資料

action=”mvc/dangerApproval/safety_app_save” 如果aciton請求後不加.json Content-Type:application/x-www

使用Socket 完成HTTP post方式的文字及檔案 demo

   程式碼結構: Android端 Web端 最終結果    該demo具有很強的通用性,而且程式碼的複用性極高,基本上以後不需要再為檔案上傳花費太多時間,拿過去直接可以用。    剛開始從

http表單方式-GET\POST

在Web開發中,我們使用的比較多的HTTP請求方式基本上就是GET、POST。 一、http請求常見的表單檔案上傳形式      首先了解下application/x-www-form-urlencoded和multipart/form-data的區別: applicati

基於RTOS的c語言實現http檔案

本實驗為了減少程式碼量,使用了封裝比較完善的http庫,本文主要講述http檔案上傳的主要要求。 一、分析http關鍵頭部資訊 為了分析http header,我們通過chrome得到上傳檔案時的http資訊: 通過上面的截圖我們可以發現,關鍵頭部