天天看點

C# POST 發送XML(傳回string中可能出現中文亂碼問題)

背景:

       我發送的是encoding='utf-8'格式的xml字元串,但一開始我使用的是

encoding.unicode.getbytes(strpost)或者default、ascii均會提示錯誤。

修改字元編碼格式後,成功!是以要根據發送的格式選取合适的方法。

 注意:

該函數可以發送xml到用友那邊,但傳回資訊中中文字元為亂碼。

<a target="_blank" href="http://blog.163.com/pinbo_jiankun/blog/static/13354648820131141548433/">這個函數也可以實作同樣的功能卻避免了亂碼問題</a>

詳細過程及代碼如下:

1、建立httpwebrequest對象,httpwebrequest不能直接通過new來建立,隻能通過webrequest.create(url)的方式來獲得。 webrequest是獲得一些應用層協定對象的一個統一的入口(工廠模式),它根據參數的協定來确定最終建立的對象類型。

2、初始化httpwebrequest對象,這個過程提供一些http請求常用的标頭屬性:agentstring,contenttype等,其中agentstring比較有意思,它是用來識别你用的浏覽器名字的,通過設定這個屬性你可以欺騙伺服器你是一個ie,firefox甚至是mac裡面的safari。很多認真設計的網站都會根據這個值來傳回對不同浏覽器特别優化的代碼。

3、附加要post給伺服器的資料到httpwebrequest對象,附加post資料的過程比較特殊,它并沒有提供一個屬性給使用者存取,需要寫入httpwebrequest對象提供的一個stream裡面。

4、讀取伺服器的傳回資訊,讀取伺服器傳回的時候,要注意傳回資料的encoding,如果我們提供的解碼類型不對,會造成亂碼,比較常見的是utf-8和gb2312。通常,網站會把它編碼的方式放在http header裡面,如果沒有,我們隻能通過對傳回二進制值的統計方法來确定它的編碼方式。