一般處理程序(ashx)獲取不到POST請求的參數問題


寫了一個一般處理程序來做接口,由於字段Content是文本,長度可能很長,鑒於這個原因,所以不能GET請求

所以問題來了,當我改成POST請求,自己使用HttpHelper類來寫了一個Demo

code
var result = new HttpHelper().GetHtml(new HttpItem()
{
    URL = "http://localhost:24885/Comment.ashx",
    Method = "POST",
    Postdata = "action=insert_comment&art_id=1&art_title=文章標題&cid=&uid=1&unick=kerwin&content=你好&type=1&reply_id=&reply_nick=&parent_uid=&parent_nick=&parent_cid=&ip="
});
調式發現

Image

在context.Request["action"]、context.Request.Form以及context.Request.QueryString都獲取不到上面的Postdata

但是我們可以在context.Request.InputStream參數中看見,InputStream是有長度的156 或者在context.Request.TotalBytes看見有數據

Image

所以我們可以通過以下代碼獲取參數

code
var pams = System.Text.Encoding.UTF8.GetString(context.Request.BinaryRead(context.Request.TotalBytes))
注意:通過上面這行代碼獲取參數只能獲取一次,第二次獲取則二進制數據不存在

我們可以對其進行解析,目前所知pams得到的數據有json序列化的的字符串,此時我們可以直接反序列化,但是如果請求的時候指定了Content-Type為application/json; charset=utf8或者為application/x-www-form-urlencoded;charset=utf-8此時,pams得到的並不是json序列化的字符串,而是含有斷點續傳的Boundary

 


免責聲明!

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



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