当前位置: 代码迷 >> C# >> C#没解析http post data的方法
  详细解决方案

C#没解析http post data的方法

热度:105   发布时间:2016-05-05 02:39:37.0
C#没有解析http post data的方法?
------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_csrf_token_"

1davo7eero_ir
------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="action"

post_wholesale_product_action
------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="event_submit_do_post"

anything
------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.i"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.s"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.sr"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.c"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.m"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.me"


------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_fmw.w._0.r"


POST DATA如上,有没有办法,像使用Request那样根据上面的字符串获取到对应的键值对?
------解决思路----------------------
http://www.codeproject.com/Articles/19777/MIME-Compliant-Parser
http://www.codeproject.com/Articles/11882/Advanced-MIME-Parser-Creator-Editor
------解决思路----------------------
http://blog.csdn.net/starfd/article/details/45393089
await Request.Content.ReadAsMultipartAsync(provider);  
  
        // This illustrates how to get the file names.  
        foreach (MultipartFileData file in provider.FileData)
 
可以查下MVC源代码是如何实现这部分的
------解决思路----------------------
自己写段代码不就行了?

------WebKitFormBoundarybhRlHvHKBvmXJE79
Content-Disposition: form-data; name="_csrf_token_"
 
1davo7eero_ir


------WebKitFormBoundarybhRlHvHKBvmXJE79 是字段分隔符,每次传输都可能不一样,但在你没贴出的部分有声明,看一下就知道
Content-Disposition: form-data; name="_csrf_token_"
表示一个变量,你关心的只是 name 的值
在两对 \r\n 之后是正文,也就是那个 1davo7eero_ir,是变量的值
该区域直到下一个分隔符出现处结束
------解决思路----------------------
你这个是upload文件吧。
------解决思路----------------------
流程规则是这样的:

1. 读取http消息头ContentType中的“boundary=”后边的信息,记为 boundary 变量。
2. 读取消息的 ContentEncoding 编码格式,记为  Encoding 变量。
3. 将 Encoding.GetBytes("--" + boundary + "\r\n") 记为参数分隔标志。
4. 5. 将 Encoding.GetBytes("--" + boundary + "--\r\n") 记为最后一个参数的结束标志。
4. 将 Encoding.GetBytes("Content-Disposition: form-data; name=\"") 记为参数说明行的开始标志,查找这一行中的参数名。
5. 在4.之后是换行回车之后,然后是参数的内容(byte[ ])。

实际上这是很简单的解析。只不过要注意,要使用二进制 byte 方式来匹配参数的“起止”和“值”的位置,千万不要把输入做为 unicode 字符串来处理。
------解决思路----------------------
看上去结构不复杂,取得文本后解析下不难吧。
------解决思路----------------------
引用:
后来找到了解决方案,我写了一篇文章:WeOnlyDo.Server服务器介绍,有简单的介绍。

看了,写得挺好的,收藏了,你有进步。
  相关解决方案