首页 新闻 会员 周边

c# Httpclient 的post方法

0
悬赏园豆:10 [已解决问题] 解决于 2015-12-22 19:32

在使用Httpclient的 PostAsyn 方法时要求传入两个参数一个请求地址一个是HttpContent类型,这个类型是请求报文体吗,要如何创建这个参数呢?

huanent的主页 huanent | 初学一级 | 园豆:47
提问于:2015-12-22 17:18
< >
分享
最佳答案
0

HttpContent是抽象类

通过HttpContent的子类来构建Post数据。

比较常用的有StringContentFormUrlEncodedContentMultipartFormDataContent 等。

 

个人比较喜欢用StringContent来传递Json数据,比较简单。

收获园豆:4
写代码的小2B | 老鸟四级 |园豆:4371 | 2015-12-22 17:43

就是StringContent传递过去之后,服务器端如何接收呢,我看了下request对象里面没找到传递过来的数据额

huanent | 园豆:47 (初学一级) | 2015-12-22 19:22
其他回答(3)
0

new stringcontent("你好")

看你要post过去的报文正文是什么。如果是字符串就像上面那样。如果是form表单。有form表单的实现。你自己在方法里new 按下空格看自动提示

收获园豆:4
吴瑞祥 | 园豆:29449 (高人七级) | 2015-12-22 17:19

再请问一下,如果是用stringContent发过去,在服务器端要如何接收呢,我试过QueryString[],Form[],都接收不了

支持(0) 反对(0) huanent | 园豆:47 (初学一级) | 2015-12-22 19:08

@huanent: 去了解下http协议吧,不然还会遇到更多问题。

在服务端就是从请求里取正文流就是。要用form接的话,有一个formcontent之类的正文,发过去就可以

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-12-23 09:44
0
url = "xxxx" ;
string postData = "{\"userid\": \"" + 1 + "\",\"agentid\": \"1\"}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
webRequest.Method = "post";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = byteArray.Length;
System.IO.Stream newStream = webRequest.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
data = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();

Post请求

试试吧!这个很屌。

收获园豆:2
大楚打码人 | 园豆:4313 (老鸟四级) | 2015-12-22 18:36

因为要做服务器端身份验证要带cookie,所以尝试用HttpClient的

支持(0) 反对(1) huanent | 园豆:47 (初学一级) | 2015-12-22 19:23
0

原来是在request的GetBufferedInputStream流里面,谢谢各位

huanent | 园豆:47 (初学一级) | 2015-12-22 19:31

楼主,你这个问题是怎么解决的,感觉你我的情况和你的很相似,能分享一下源码吗?

支持(0) 反对(0) 10小虎 | 园豆:202 (菜鸟二级) | 2016-07-27 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册