C 帶參訪問介面,WebClient方式

2022-03-02 19:58:20 字數 3060 閱讀 2878

//例項化

webclient client = new webclient();

//位址

string path = "

";//資料較大的引數

//引數轉流

byte bytearray =encoding.utf8.getbytes(datastr);

//採取post方式必須加的header,如果改為get方式的話就去掉這句話即可

client.headers.add("

content-type

", "

");//長度

client.headers.add("

contentlength

", bytearray.length.tostring());

//上傳,post方式,並接收返回資料(這是同步,需要等待接收返回值)

byte responsedata = client.uploaddata(path, "

post

", bytearray);

//釋放

client.dispose();

//處理返回資料(一般用json)

string srcstring = encoding.utf8.getstring(responsedata);

疑惑:引數是一段 xml ,並且已經加密,xml資料量較小只是幾段文字。

此時此方法不好使,但是用方式三就是好使的,原因未知。

//

繫結事件,為了獲取返回值

client.uploaddatacompleted += new

uploaddatacompletedeventhandler(uploaddatacallback2);

//這裡是url位址

uri uri = new

uri(url);

//非同步post提交,不用等待。

client.uploaddataasync(uri, "

post

", bytearray);

//接收返回值的方法

public

static

void

uploaddatacallback2(object sender, uploaddatacompletedeventargs e)

//

位址string url = "

" + id + "";//

例項化webclient client = new

webclient();

//上傳並接收資料

byte responsedata =client.downloaddata(url);

//接收返回的json的流資料,並轉碼

string srcstring = encoding.utf8.getstring(responsedata);

//

需要新寫個類繼承webclient,並重寫

//然後例項化,就可以設定超時時間了。

例:webclient webclient = new

webdownload();

//////

webclient 超時設定

///public

class

webdownload : webclient

set }

public

webdownload()

public webdownload(int

timeout)

protected

override

webrequest getwebrequest(uri address)

}

//

位址string url = "

?pro=

" +pro;

//傳的引數

//轉成位元組

byte bytearray1 =encoding.utf8.getbytes(datastr1);

//建立webrequest

//post方式

webrequest.method = "

post";

//中預設的enctype,form表單資料被編碼為key/value格式傳送到伺服器(表單預設的提交資料的格式)

webrequest.contenttype = "";

//獲取位元組數

webrequest.contentlength =encoding.utf8.getbytecount(datastr1);

//獲取用於寫入請求資料的 system.io.stream 物件

stream webstream =webrequest.getrequeststream();

//向當前流中寫入位元組序列,並將此流中的當前位置提公升寫入的位元組數。

webstream.write(bytearray1, 0

, bytearray1.length);

//獲取返回資料

//轉碼

streamreader sr = new

streamreader(response.getresponsestream(), encoding.utf8);

//返回的結果

string ret =sr.readtoend();

//關閉

sr.close();

response.close();

webstream.close();

c 多執行緒訪問介面

c 2005後不再支援多執行緒直接訪問介面的控制項 介面建立執行緒與訪問執行緒不是同乙個執行緒 不過可以使用delegate來解決 2.定義執行緒函式 在另乙個執行緒中可以對介面控制項進讀操作 view plaincopy to clipboardprint?private void progres...

C 訪問帶密碼的ACCESS資料庫

c 訪問帶密碼的access資料庫 在使用.net時發現訪問有password 的access與訪問有password的sql server不一樣,不用嚮導時access connectionstring provider microsoft.jet.oledb.4.0 data source pa...

c 後台訪問介面封裝好的方法

在平時的工作學習生活中,難免要遇到一些特殊情況,在特殊情況下我們會選擇將方法封裝在介面裡並且發布,在我們需要訪問的時候再通過後台 來實現呼叫介面來返回資料。1 在vs2015中新建webapi,新建類getapkinfo 其中。filepath為引數。2 將介面通過iis發布後,我們在後台就可以通過...