c 關於 做介面開發時,遇到的Form表單提交資料

2022-07-08 02:39:10 字數 3204 閱讀 5128

遇到介面開發時,對接客戶要求傳送請求資料為form表單提交,以下是經過大佬們寫過類似整理出來適合我自己用的一套

public

class

formitemmodel

//////

/// public

string value

//////

/// public

long values

}

1

private

void btn_click(object

sender, eventargs e)2);

19 formdatas.add(new

formitemmodel()

20);

24 formdatas.add(new

formitemmodel()

25);

29 formdatas.add(new

formitemmodel()

30);

34 formdatas.add(new

formitemmodel()

35);

39 formdatas.add(new

formitemmodel()

40);

44//

提交表單

45var result =htexamdocking.postform(url, formdatas);

46if (result != null)47

50 }

1

///2

///使用post方法獲取字串結果

3///

4///

5///

post表單內容

6///

7///

預設20秒

8///

響應內容的編碼型別(預設utf-8)

9///

10public

static

string postform(string url, listformitems, cookiecontainer cookiecontainer = null, string refererurl = null, encoding encoding = null, int timeout = 20000)11

", boundary);

27//

請求流28

var poststream = new

memorystream();

29#region 處理form表單請求內容

30//

是否用form上傳檔案

31var formuploadfile = formitems != null && formitems.count > 0;32

if(formuploadfile)

33\"; filename=\"\"

" +38

"" +39"

\r\n\r\n";

40//

文字資料模板

41string dataformdatatemplate =42"

\r\n--

" + boundary +43"

\r\ncontent-disposition: form-data; name=\"\"

" +44

"\r\n\r\n";

45foreach (var item in

formitems)

4657

else

5864

//統一處理

65byte formdatabytes = null;66

//第一行不需要換行

67if (poststream.length == 0

)68 formdatabytes = encoding.utf8.getbytes(formdata.substring(2, formdata.length - 2

));69

else

70 formdatabytes =encoding.utf8.getbytes(formdata);

71 poststream.write(formdatabytes, 0

, formdatabytes.length);72}

73//

結尾74

var footer = encoding.utf8.getbytes("

\r\n--

" + boundary + "

--\r\n");

75 poststream.write(footer, 0

, footer.length);

7677}78

else

7982

#endregion

8384 request.contentlength =poststream.length;

8586

#region 輸入二進位製流

87if (poststream != null)88

99100

////debug

101//

poststream.seek(0, seekorigin.begin);

102//

streamreader sr = new streamreader(poststream);

103//

var poststr = sr.readtoend();

104 poststream.close();//

關閉檔案訪問

C 介面開發遇到的問題

1 如果資料無法通過request.form method post request.querystring method get 來取得相關引數資料。資料就有可能通過流的方式傳遞過來的。stream stream context.request.inputstream stream.positio...

做專案時遇到的幾個關於C 和SQL的細節問題(二)

6 js中的中文顯示到頁面上時,一般都會亂碼,解決辦法 就是在引用 的時候加上charset。gb2312如果不行,可以換用其它的試試,如 utf 8等 7 儲存上傳的檔案時,為了減少各種可能的衝突,最好是用當前時間 精確到分或秒 加上使用者的id生成乙個新的檔名,再在資料庫中儲存原檔名和新檔名。8...

做SQL解析時遇到的問題

相對於算術表示式,json和xml等解析,sql就比較複雜了。舉個例子來說 符號 是目前的sqlanalyzer1.00中作為進入遞迴的標誌之一,到 結束,中間是個查詢語句。如果測試用例也是這樣,自然沒有問題,但是,sql是靈活的.首先,括號裡未必是子查詢,它可能是函式的一部分,比如count 這時...