因為本人經常愛用c#做一些爬蟲類的小東西,每次構造post引數的時候,都是直接字串拼接的方式的,有時候改起來不太方便。
場景:
需要post乙個位址
引數列表 :
username:管理員
password:123456
***:***
我想大部分人可能會這樣寫
string username = "管理員";
string password = "123456";
string *** = "***";
string postdata = string.format("username=&password=&***=", username, password, ***);
直接用字串來拼接的,這樣寫是最直接的,我一直都是這樣寫,然後到後來,比如引數十幾二十個的時候,不知道跟是誰,甚至有時候password手滑打成了pasword
碰到這些情況很蛋疼,因為這樣並不怎麼直觀。
然後我想到了下面的方法
首先是定義了乙個靜態方法,方便呼叫,注意引數型別
此方法2.0版本以上都是支援的。
public static string createpostdata(dictionarypostparameters)
return postdata;
}
然後還有linq版的,需要3.5版本以上不羅嗦
public static string createpostdata(dictionarypostparameters)
甚至還可以寫成擴充套件方法,這裡就不寫了。
然後構造post引數的時候就可以這樣
dictionaryparameters = new dictionary();
parameters.add("username", "管理員");
parameters.add("password", "123456");
parameters.add("***", "***");
string postdata = createpostdata(parameters);
因為post引數是鍵值對應的,這裡用字典的形式來表示出來,我個人感覺應該是蠻直觀了,以後需要修改哪個引數,直接定位
**執行結果:
當然,有時候我們post引數包含中文啊或者一些敏感字元,就需要進行urlencode了,下面是方法
//此方法需要新增system.web引用 程式集:system.web(在 system.web.dll 中)
//引數isencode 預設為 false 表示不需要轉碼,需要轉碼的時候指定引數為true即可
public static string createpostdata(dictionarypostparameters,bool isencode = false)
dictionaryparameters = new dictionary();
parameters.add("username", "管理員");
parameters.add("password", "123456");
parameters.add("***", "***");
string postdata = createpostdata(parameters,true);
**執行結果:
到這裡應該差不多了,有什麼不對的地方希望各位能指正出來。
scons 一種軟體構造工具
scons是一種開源軟體構建工具,即下一代構建工具。將scons視為經典的make實用程式的改進的跨平台替代品,它具有類似於autoconf automake和ccache之類的編譯器快取的整合功能。簡而言之,scons是一種更容易,更可靠和更快的軟體構建方式。scons作為sccons構建工具設計...
C 呼叫python指令碼並傳遞引數的一種方法
1 c 裡面怎麼呼叫python指令碼?2 python指令碼裡面怎麼獲取引數?先回答第乙個 c 裡面system.diagnostics.process.start 這裡面可以呼叫系統命令和程式 我們這裡只需要這樣寫就可以呼叫c say.py指令碼了,如下 system.diagnostics.p...
C中一種函式宣告方式及可變引數函式討論
本文部分原創,部分改編 可變引數函式改編自 kevintz的 c語言中可變引數的用法 一文 include 引入可變引數函式標頭檔案 include c語言中另一種函式宣告方式 print uint,buf,len int uint int buf int len 可變引數函式 void va fu...