十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
現(xiàn)在我用我所知道的為樓主介紹VB.NET的API調(diào)用,請(qǐng)樓主瀏覽一下,看看行不行。
寶應(yīng)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
Windows API就是Windows系統(tǒng)的API函數(shù)簡稱(Application Program Interface,即:應(yīng)用程序接口函數(shù)),它是Windows操作系統(tǒng)提供給各種開發(fā)基于Windows平臺(tái)應(yīng)用軟件的開發(fā)語言的一些公用的函數(shù),這些函數(shù)一般都比較底層,所以當(dāng)各種開發(fā)語言使用自帶的函數(shù)或類庫已無法解決問題時(shí),調(diào)用Windows API函數(shù)往往是一種非常直接、有效的解決方法。但由于在程序中調(diào)用Windows API函數(shù)一般都很復(fù)雜,所以對(duì)于程序員來說,是否能夠靈活的使用Windows API函數(shù),往往也是其水平高低的一個(gè)重要標(biāo)志。但自從微軟推出.Net框架以后,各種開發(fā)基于.Net平臺(tái)下的程序語言,如Visual Basic .Net、Visual C#等卻很少使用Windows API函數(shù),并且微軟公司也不像以前那樣,提倡在這些.Net開發(fā)語言中使用Windows API函數(shù),其主要的原因如下:
1. .Net框架所附帶的類庫.Net FrameWork SDK是一個(gè)內(nèi)容豐富、功能強(qiáng)大的軟件開發(fā)包,各種Windows API函數(shù)所實(shí)現(xiàn)的各種功能幾乎都可以在這個(gè)軟件開發(fā)包中找到與之對(duì)應(yīng)的部分。
2. 微軟Visual Basic .Net、Visual C#等目的是編寫跨平臺(tái)的應(yīng)用程序,如果在Visual Basic .Net、Visual C#等中使用Windows API函數(shù),這也就注定了編寫出的程序只能運(yùn)行于Windows平臺(tái)之下,而弱化了.NET的跨平臺(tái)能力。這也就是為什么微軟不提倡在.Net平臺(tái)調(diào)用Windows API函數(shù)的原因。
雖然微軟并不提倡在Visual Basic .Net、Visual C#中調(diào)用Windows API函數(shù),但由于目前.Net 框架推出時(shí)間較短,.Net FrameWork SDK中提供的類庫還并不足以完全替換Windows API函數(shù)的所有功能,所以在某些時(shí)候,.Net開發(fā)語言還是必須要調(diào)用Windows API函數(shù)。
一.平臺(tái)調(diào)用、托管DLL、非托管DLL簡介:
托管DLL就是能夠在公共語言運(yùn)行庫(Common Language Runtime,簡稱CLR)中能夠直接引用的,并且擴(kuò)展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll等。非托管DLL就是平常所的動(dòng)態(tài)鏈接庫等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語言運(yùn)行庫中不能直接被調(diào)用,而需要經(jīng)過.Net框架提供的“平臺(tái)調(diào)用”服務(wù)后才可以。
“平臺(tái)調(diào)用”是.Net框架為Visual Basic .Net、Visual C#等.Net開發(fā)語言提供的一種服務(wù),用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)(其中包括Windows API函數(shù))。“平臺(tái)調(diào)用”依賴于元數(shù)據(jù)在運(yùn)行時(shí)查找導(dǎo)出函數(shù)并封裝其參數(shù)。圖01公共語言運(yùn)行庫利用“平臺(tái)服務(wù)”調(diào)用非托管DLL中的函數(shù)的流程圖:
圖01:“平臺(tái)服務(wù)”的調(diào)用非托管函數(shù)的流程圖
在托管代碼中使用“平臺(tái)調(diào)用”服務(wù)調(diào)用非托管DLL中封裝的函數(shù)時(shí),“平臺(tái)服務(wù)”將依次執(zhí)行以下操作:
1. 查找包含該函數(shù)所在的DLL文件。
2. 如果找到,則將該DLL文件 加載到內(nèi)存中。
3. 查找函數(shù)在內(nèi)存中的地址并將其參數(shù)推到堆棧上,并封送所需的數(shù)據(jù)。
4. 將控制權(quán)轉(zhuǎn)移給非托管函數(shù)。 這樣整個(gè)函數(shù)調(diào)用完成。
在Visual Basic .Net中使用“平臺(tái)調(diào)用”服務(wù),申明Windows API函數(shù)主要有二種具體的實(shí)現(xiàn)方法:
1. 使用DllImport特征類來申明Windows API函數(shù)。
2. 使用“Declare”語句來申明Windows API函數(shù)。
這二種方法雖有異曲同工之效,但在繁簡上卻有很大差異,第一種方法申明過程比較復(fù)雜,很容易在申明Windows API函數(shù)時(shí)出錯(cuò),所以并不提倡。而第二種方法相對(duì)簡單,并且又保存了以前Visual Basic中的很多語法,所以在平常時(shí)大都使用這種方法來申明Windows API函數(shù)。
二.VB.Net查看文件中圖標(biāo)的函數(shù)及申明Windows API的方法:
Visual Basic .Net要實(shí)現(xiàn)查看文件中的圖標(biāo),目前只使用.Net FrameWork SDK是無法實(shí)現(xiàn)這種功能的,正如前面所說,主要是由于.Net FrameWork SDK推出的時(shí)間較短,其功能還不可能面面俱到。解決問題的關(guān)鍵是正確使用Windows API函數(shù),其中所涉及到的Windows API函數(shù)主要有二個(gè):其一是獲得指定文件中的圖標(biāo)數(shù)目;其二是從指定文件的指定位置導(dǎo)出圖標(biāo)的Windows句柄。這二個(gè)函數(shù)都位于“Shell32.dll”文件中,并且函數(shù)的入口點(diǎn)都為“ExtractIcon”。下面是在Visual Basic .Net中分別使用DllImport特征類和“Declare”語句申明這二個(gè)Windows API函數(shù)的具體方法。
(1).使用DllImport特征類來申明Windows API函數(shù):
下面是在Visual Basic .Net中使用DllImport特征類申明二個(gè)Windows API函數(shù)的具體示例:
'函數(shù)ExtractIcon,其功能是是從指定文件的指定位置導(dǎo)出圖標(biāo)的Windows句柄。
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
'函數(shù)Icon_Num,其功能是獲得指定文件中的圖標(biāo)數(shù)目
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _
Public Function _
Icon_Num ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer
End Function
在使用DllImport特征類申明Windows API函數(shù)時(shí),如果申明的函數(shù)名稱和函數(shù)的入口點(diǎn)相同,則可以在申明Windows API函數(shù)時(shí),省略定義函數(shù)入口點(diǎn)對(duì)應(yīng)的代碼,即EntryPoint對(duì)象字段對(duì)應(yīng)的代碼,這樣聲明ExtractIcon函數(shù)的代碼也可以簡化為如下所示:
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
(2).使用“Declare”語句來申明Windows API函數(shù):
使用“Declare”語句的確比使用DllImport特征類要簡單了許多,下面是在Visual Basic .Net中使用“Declare”語句來聲明上述二個(gè)Windows API函數(shù)的具體方法:
Declare Auto Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
'聲明ExtractIcon函數(shù)
Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer
'聲明Icon_Num函數(shù)
在Visual Basic .Net中聲明Windows API函數(shù)時(shí),“Declare”語句中Alias關(guān)鍵字的作用相當(dāng)于使用DllImport特征類中的EntryPoint對(duì)象字段。同樣在使用“Declare”語句聲明Windows API函數(shù)時(shí),如果聲明的函數(shù)和函數(shù)的入口點(diǎn)相同,也可以省略Alias關(guān)鍵字對(duì)應(yīng)的代碼,所以ExtractIcon函數(shù)也可以簡化為如下:
Declare Auto Function ExtractIcon Lib "Shell32.dll" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
下面就結(jié)合一個(gè)示例的編寫過程來掌握的這二個(gè)Windows API函數(shù)的具體使用方法,這個(gè)示例的作用就是讀取指定文件中的圖標(biāo)數(shù)目,并顯示文件中的圖標(biāo)。
三.本文中程序的編寫、調(diào)試和運(yùn)行環(huán)境:
(1).視窗2000高級(jí)服務(wù)器版。
(2).Visual Studio .Net 2003企業(yè)結(jié)構(gòu)設(shè)計(jì)版,.Net FrameWork SDK版本號(hào)4322。
四.Visual Basic .Net讀取文件中的圖標(biāo)的實(shí)現(xiàn)步驟:
下面介紹的示例,其功能讀取指定文件中包含的圖標(biāo)數(shù)目,并把這些圖標(biāo)全部顯示出來。下面是這個(gè)示例的實(shí)現(xiàn)步驟:
1. 啟動(dòng)Visual Studio .Net。
2. 選擇菜單【文件】|【新建】|【項(xiàng)目】后,彈出【新建項(xiàng)目】對(duì)話框。
3. 將【項(xiàng)目類型】設(shè)置為【Visual Basic項(xiàng)目】。
4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。
5. 在【名稱】文本框中輸入【Visual Basic .Net查看文件中的圖標(biāo)】。
6. 在【位置】的文本框中輸入【E:\VS.NET項(xiàng)目】,然后單擊【確定】按鈕,這樣在【E:\VS.NET項(xiàng)目】目錄中就產(chǎn)生了名稱為【Visual Basic .Net查看文件中的圖標(biāo)】文件夾,里面存放著【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的所有文件。具體如圖02所示:
圖02:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的【新建項(xiàng)目】對(duì)話框
7. 選擇菜單【項(xiàng)目】|【添加新項(xiàng)】,在彈出的對(duì)話框中的【模板】設(shè)置為【模塊】,【名稱】文本框設(shè)置為【Module1.vb】后。單擊【打開】按鈕,則在項(xiàng)目中增加了一個(gè)模板文件,名稱為【Module1.vb】。
8. 把Visual Stuido .Net的當(dāng)前窗口切換到Module1.vb的代碼編輯窗口,并在其Module1的代碼區(qū)中添加下列代碼,下列代碼是用二種方式聲明二個(gè)Windows API函數(shù):
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
'聲明ExtractIcon函數(shù)
Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As String , ByVal uiIconIndex As Integer ) As Integer
9. 把Visual Studio .Net的當(dāng)前窗口切換到Form1窗體的設(shè)計(jì)查看,并從【工具箱】中的【W(wǎng)indows窗體】選項(xiàng)卡中拖入下列組件到Form1窗體:
四個(gè)Label組件,其中二個(gè)用以顯示提示信息,另外二個(gè)分別用以顯示選擇的文件名稱和這個(gè)文件中包含的圖標(biāo)數(shù)目。
一個(gè)ListView組件,利用其顯示大圖標(biāo)的屬性用以顯示選定文件中的圖標(biāo)。
一個(gè)OpenFileDialog組件,用以選擇要查看圖標(biāo)的文件名稱。
一個(gè)ImageList組件,它起的是橋梁的作用,首先把從文件中導(dǎo)出的圖標(biāo)存放到這里,然后再提供ListView組件顯示出來。
一個(gè)Button組件。
10. 按照表01中數(shù)值來設(shè)定設(shè)定組件的主要屬性:
組件類型 組件名稱 屬性 設(shè)置結(jié)果
Form Form1 Text VB.NET查看文件中的圖標(biāo)
Form1 MaximizeBox False
Form1 MinimizeBox False
Form1 FormBorderStyle FixedSingle
ListView ListView1 ImageList1 LargeImageList
ListView1 MultiSelect False
ListView1 Size Size ( 380 , 208 )
Button Button1 Text 選擇文件
Button1 FlatStyle Flat
ImageList ImageList1 Size Size ( 32 , 32 )
ImageList1 TransparentColor Color.Transparent
Label Label1 Text 文件名稱:
Label2 Text 圖標(biāo)數(shù)目:
Label3 Text ""
Label4 Text "0"
表01:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目窗體中各組件的主要屬性設(shè)定數(shù)值表
并按照?qǐng)D02中各組件的位置、大小和排列方式來調(diào)整窗體中各個(gè)組件:
圖02:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的設(shè)計(jì)界面
11. 把Visual Studio .Net當(dāng)前窗口切換到Form.vb的代碼編輯窗口,并用下列代碼替換Form1.vb中的Button1組件的Click事件的處理代碼,下列代碼是在Button1組件的Click事件中處理查看文件中圖標(biāo)的功能,具體如下:
Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
If OpenFileDialog1.ShowDialog ( ) = DialogResult.OK Then
'清除組件中的所有項(xiàng)目
ListView1.Items.Clear ( )
ImageList1.Images.Clear ( )
Dim sfName As String = OpenFileDialog1.FileName
Label3.Text = sfName
Dim iIcon_Num As Integer = Icon_Num ( IntPtr.Zero , sfName , -1 )
'顯示文件中的圖標(biāo)數(shù)目
Label4.Text = iIcon_Num.ToString ( )
Dim i As Integer
For i = 0 To iIcon_Num - 1 Step 1
'強(qiáng)制實(shí)現(xiàn)int到uint類型轉(zhuǎn)換
Dim j As UInt32
j = System.Convert.ToUInt32 ( i )
Dim hIcon As System.IntPtr = ExtractIcon ( IntPtr.Zero , sfName , j )
'在imageList1組件中加入當(dāng)然提取的圖標(biāo)
ImageList1.Images.Add ( Icon.FromHandle ( hIcon ).ToBitmap ( ) )
'在ListView組件中加入一個(gè)項(xiàng)目
ListView1.Items.Add ( "第" + ( i + 1 ).ToString ( ) + "個(gè)圖標(biāo)" )
'把加入項(xiàng)目的圖象索引指向剛才加入圖標(biāo)在imagList1組件中的索引,從而顯示圖標(biāo)
ListView1.Items ( i ).ImageIndex = i
Next i
End If
End Sub
12. 至此,在上述步驟都正確執(zhí)行后,【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的全部工作就完成了。單擊快捷鍵F5就可以運(yùn)行程序,此時(shí)單擊【選擇文件】按鈕選擇文件后,程序就能夠讀取這個(gè)文件中的圖標(biāo)及其數(shù)目,并顯示出來了。具體如圖03所示:
圖03:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的運(yùn)行界面
五.總結(jié):
解決Visual Basic .Net查看文件中的圖標(biāo)的關(guān)鍵并非是使用.Net框架中提供的類庫,而是使用Windows的API函數(shù)。雖然這與利用Visual Basic .Net開發(fā)跨平臺(tái)程序的初衷相違背,但的確不失為一種解決問題的方法。有些時(shí)候通過Windows API函數(shù)能夠快捷、方便的解決實(shí)際問題,而這往往是只使用.Net FrameWork SDK所望塵莫及的,但隨著.Net FrameWork SDK內(nèi)容的不斷豐富,各種新的組成部分和新的功能不斷加入,可以預(yù)見的是,在未來的.Net FrameWork SDK中必將擁有可以替換本文中介紹的二個(gè)Windows API函數(shù)的組成部分。
這個(gè)說簡單也簡單,百度google都有自己的地圖接口,去找一下接口調(diào)用說明,里面都有案例。在程序里面調(diào)用即可。至于調(diào)用后具體的功能則需要查詢接口函數(shù)。我以前做過google的,百度的實(shí)際上也是一樣
這個(gè)跟反序列化毫無關(guān)系。
分隔字符串就用 Split(),沒什么難度。
工具里的cookies有的是 send有的是 received
send是你發(fā)送出去的, 這些可以能是 前幾次獲得的,也可能是子框架前幾次獲得的,還可能是網(wǎng)頁腳本 產(chǎn)生或更改的, 要解析網(wǎng)頁才能知道
received才是網(wǎng)絡(luò)返回的. 這些返回的替換原來的值,如果原來有值二沒有被替換的就保留原來的值
所以工具里多出來的可能是保留的原來的舊cookie,也可能是框架訪問才獲得的,你得解析httpwebrequest獲得的網(wǎng)頁內(nèi)容并繼續(xù)訪問才可以得到
棋類一般用的博弈算法,如 A*算法
牌類就不知道了
這方面你看看人工智能的知識(shí)就知道了,給你個(gè)網(wǎng)站
不想一點(diǎn)一點(diǎn)寫了,粘貼給你吧
使用 HttpWebRequest 向網(wǎng)站提交數(shù)據(jù)
HttpWebRequest 是 .net 基類庫中的一個(gè)類,在命名空間 System.Net 下面,用來使用戶通過 HTTP 協(xié)議和服務(wù)器交互。
HttpWebRequest 對(duì) HTTP 協(xié)議進(jìn)行了完整的封裝,對(duì) HTTP 協(xié)議中的 Header, Content, Cookie 都做了屬性和方法的支持,很容易就能編寫出一個(gè)模擬瀏覽器自動(dòng)登錄的程序。
程序使用 HTTP 協(xié)議和服務(wù)器交互主要是進(jìn)行數(shù)據(jù)的提交,通常數(shù)據(jù)的提交是通過 GET 和 POST 兩種方式來完成,下面對(duì)這兩種方式進(jìn)行一下說明:
1. GET 方式。 GET 方式通過在網(wǎng)絡(luò)地址附加參數(shù)來完成數(shù)據(jù)的提交,比如在地址 中,前面部分 表示數(shù)據(jù)提交的網(wǎng)址,后面部分 hl=zh-CN 表示附加的參數(shù),其中 hl 表示一個(gè)鍵(key), zh-CN 表示這個(gè)鍵對(duì)應(yīng)的值(value)。程序代碼如下:
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對(duì)接收到的頁面內(nèi)容進(jìn)行處理
}
2. POST 方式。 POST 方式通過在頁面內(nèi)容中填寫參數(shù)的方法來完成數(shù)據(jù)的提交,參數(shù)的格式和 GET 方式一樣,是類似于 hl=zh-CNnewwindow=1 這樣的結(jié)構(gòu)。程序代碼如下:
string param = "hl=zh-CNnewwindow=1";
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對(duì)接收到的頁面內(nèi)容進(jìn)行處理
}
在上面的代碼中,我們?cè)L問了 的網(wǎng)址,分別以 GET 和 POST 方式提交了數(shù)據(jù),并接收了返回的頁面內(nèi)容。然而,如果提交的參數(shù)中含有中文,那么這樣的處理是不夠的,需要對(duì)其進(jìn)行編碼,讓對(duì)方網(wǎng)站能夠識(shí)別。
3. 使用 GET 方式提交中文數(shù)據(jù)。 GET 方式通過在網(wǎng)絡(luò)地址中附加參數(shù)來完成數(shù)據(jù)提交,對(duì)于中文的編碼,常用的有 gb2312 和 utf8 兩種,用 gb2312 方式編碼訪問的程序代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string address = "?" + HttpUtility.UrlEncode("參數(shù)一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
//在這里對(duì)接收到的頁面內(nèi)容進(jìn)行處理
}
在上面的程序代碼中,我們以 GET 方式訪問了網(wǎng)址 ,傳遞了參數(shù)“參數(shù)一=值一”,由于無法告知對(duì)方提交數(shù)據(jù)的編碼類型,所以編碼方式要以對(duì)方的網(wǎng)站為標(biāo)準(zhǔn)。常見的網(wǎng)站中, (百度)的編碼方式是 gb2312, (谷歌)的編碼方式是 utf8。
4. 使用 POST 方式提交中文數(shù)據(jù)。 POST 方式通過在頁面內(nèi)容中填寫參數(shù)的方法來完成數(shù)據(jù)的提交,由于提交的參數(shù)中可以說明使用的編碼方式,所以理論上能獲得更大的兼容性。用 gb2312 方式編碼訪問的程序代碼如下:
Encoding myEncoding = Encoding.GetEncoding("gb2312");
string param = HttpUtility.UrlEncode("參數(shù)一", myEncoding) + "=" + HttpUtility.UrlEncode("值一", myEncoding) + "" + HttpUtility.UrlEncode("參數(shù)二", myEncoding) + "=" + HttpUtility.UrlEncode("值二", myEncoding);
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "" );
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
//在這里對(duì)接收到的頁面內(nèi)容進(jìn)行處理
}
從上面的代碼可以看出, POST 中文數(shù)據(jù)的時(shí)候,先使用 UrlEncode 方法將中文字符轉(zhuǎn)換為編碼后的 ASCII 碼,然后提交到服務(wù)器,提交的時(shí)候可以說明編碼的方式,用來使對(duì)方服務(wù)器能夠正確的解析。
以上列出了客戶端程序使用 HTTP 協(xié)議與服務(wù)器交互的情況,常用的是 GET 和 POST 方式?,F(xiàn)在流行的 WebService 也是通過 HTTP 協(xié)議來交互的,使用的是 POST 方法。與以上稍有所不同的是, WebService 提交的數(shù)據(jù)內(nèi)容和接收到的數(shù)據(jù)內(nèi)容都是使用了 XML 方式編碼。所以, HttpWebRequest 也可以使用在調(diào)用 WebService 的情況下。