如何在c#.net中使用httpwebrequest数据发布 [英] How to post using httpwebrequest data in c#.net
本文介绍了如何在c#.net中使用httpwebrequest数据发布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试
{
string url =http://xyz.co.in:8080/register;
string postdata =uid+ uid +userid+ userid +password+密码+emailid+ emailid +isotemplate+ isotemplate +mobileno+ mobileno +
deviceserialid+ deviceserialid +compmacaddress+ compmacaddress +kioskid+ kioskid +kioskhandler+ kioskhandler +devicename
+ devicename +devicemodel+ devicemodel;
byte [] data = Encoding.UTF8.GetBytes(postdata);
HttpWebRequest request =(HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method =POST;
//将我们的请求字符串转换为字节流
byte [] postBytes = Encoding.UTF8.GetBytes(postdata);
//这很重要 - 请确保以这种方式指定类型
request.ContentType =application / json; charset = UTF-8;
request.Accept =application / json;
request.ContentLength = postBytes.Length;
//request.CookieContainer = Cookies;
//request.UserAgent = currentUserAgent;
Stream requestStream = request.GetRequestStream();
//现在发送
requestStream.Write(postBytes,0,postBytes.Length);
requestStream.Close();
//抓住响应并将其打印到控制台以及状态码
HttpWebResponse response =(HttpWebResponse)request.GetResponse();
字符串结果;
using(StreamReader rdr = new StreamReader(response.GetResponseStream()))
{
result = rdr.ReadToEnd();
}
我的尝试:
远程服务器错误400消息
解决方案
< blockquote>
尝试将postdata设置为字符串,例如uid =+ uid +& userid =+ userid +& password =+ password etc
ie'& '在不同的字段之间,字段名称和值之间的'='。
或者使用FormUrlEncodedContent
类似于
Dim params = New Dictionary(Of String,String)
params.Add(uid,uid)
params.Add(userid,userid)
params.Add(password,password)
....
Dim postdata = New FormUrlEncodedContent( PARAMS)
try { string url = "http://xyz.co.in:8080/register"; string postdata = "uid" + uid + "userid" + userid + "password" + password + "emailid" + emailid + "isotemplate"+ isotemplate + "mobileno" + mobileno + "deviceserialid" + deviceserialid + "compmacaddress" + compmacaddress + "kioskid" + kioskid + "kioskhandler" + kioskhandler + "devicename" + devicename + "devicemodel" + devicemodel; byte[] data = Encoding.UTF8.GetBytes(postdata); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.KeepAlive = false; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; // turn our request string into a byte stream byte[] postBytes = Encoding.UTF8.GetBytes(postdata); // this is important - make sure you specify type this way request.ContentType = "application/json; charset=UTF-8"; request.Accept = "application/json"; request.ContentLength = postBytes.Length; //request.CookieContainer = Cookies; //request.UserAgent = currentUserAgent; Stream requestStream = request.GetRequestStream(); // now send it requestStream.Write(postBytes, 0, postBytes.Length); requestStream.Close(); // grab te response and print it out to the console along with the status code HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string result; using (StreamReader rdr = new StreamReader(response.GetResponseStream())) { result = rdr.ReadToEnd(); }
What I have tried:
remote server bad error 400 message
解决方案
Try setting your postdata to be a string like "uid=" + uid + "&userid=" + userid + "&password=" + password etc i.e. '&' between different fields and '=' between the field name and value. Alternatively use FormUrlEncodedContent Something like Dim params = New Dictionary(Of String, String) params.Add("uid", uid) params.Add("userid", userid) params.Add("password", password) .... Dim postdata= New FormUrlEncodedContent(params)
这篇关于如何在c#.net中使用httpwebrequest数据发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文