WebAPI獲取客戶端請求數據


1.什么是WebAPI,詳見:http://www.cxyclub.cn/n/25123/
2.一般情況下我們不需要去關心客戶端的請求數據,WebAPI會通過自己的方式去將客戶端請求的數據轉換為實體對象,我們在接口里面定義實體就可以接收數據,但是公司要求必須要記錄客戶端的請求數據到日志中,於是我們就創建了一個攔截器來處理。
攔截器需要繼承ActionFilterAttribute並重寫方法OnActionExecuting(HttpActionContext actionContext),然后在方法里面通過如下代碼記錄客戶端數據:

var request = HttpContext.Current.Request;
byte[] byts = new byte[request.InputStream.Length];
request.InputStream.Read(byts, 0, byts.Length);
string pa = Encoding.Default.GetString(byts);

 

奇跡出現了,你會發現你永遠都無法獲得數據,pa的值永遠為空,怎么辦呢?查看多方面資料后發現,C#中的流數據讀取一次之后下標就到了最后,我們再次讀取時必須要將位置設置為0,代碼如下:

var request = HttpContext.Current.Request;
request.InputStream.Position = 0;//核心代碼
byte[] byts = new byte[request.InputStream.Length];
request.InputStream.Read(byts, 0, byts.Length);
string pa = Encoding.Default.GetString(byts);

 

記錄一下,以后遇到也好解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM