.NET 后台提交POST请求
请看下面的一个小示例
public OperationResult GetRequestResult(string Command, Dictionary<string, string> Params)
{
try
{
//建立http请求
HttpWebRequest hrq = (HttpWebRequest)WebRequest.Create("这里是URL");
// hrq.Credentials = CredentialCache.DefaultCredentials;
hrq.Proxy = WebRequest.GetSystemWebProxy();
hrq.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); ;
hrq.Method = "post";
hrq.CookieContainer = new CookieContainer();
using (Stream strm = hrq.GetRequestStream())
{//写入请求数据流
XmlWriterSettings ws = new XmlWriterSettings();
ws.Encoding = Encoding.UTF8;
using (XmlWriter xw = XmlWriter.Create(strm, ws))
{
xw.WriteStartElement("message");
xw.WriteStartElement("head");
WriteValue(xw, "version", "1.0");
WriteValue(xw, "loginemail", "1@1.com");
xw.WriteEndElement();
xw.WriteStartElement("body");
xw.WriteEndElement();
xw.WriteEndElement();
xw.Flush();
}
}
WebResponse resp = hrq.GetResponse();
string ErrorId = string.Empty;
string Mesaage = string.Empty;
using (Stream strm = resp.GetResponseStream())
{
XmlDocument doc = new XmlDocument();
doc.Load(strm);
XmlNode root = doc.DocumentElement;
XmlNode code = root.SelectSingleNode("/message/head/field[@name='RESP_CODE']");
XmlNode msg = root.SelectSingleNode("/message/head/field[@name='RESP_MSG']");
if ((msg != null) && (code != null))
{
ErrorId = code.InnerText;
Mesaage = msg.InnerText;
int r = 0;
if ((!int.TryParse(ErrorId, out r)) || (r != 0))
{
return OperationResult.CreateResult(-2, Mesaage);
}
}
return OperationResult.CreateResult(0, string.Empty, doc.OuterXml);
}
}
catch (Exception e)
{
if (e is WebException)
{
switch (((WebException)e).Status)
{
case WebExceptionStatus.ConnectFailure:
case WebExceptionStatus.Timeout:
return OperationResult.CreateResult(-1, "由于连接不上服务器,故暂时无法操作,请耐心等候。");
}
}
return OperationResult.CreateResult(-1, e.Message);
}
finally
{
}
}
上面这段代码了就是最简单直接的请求 通过XML 传输数据
数据模型转换成XML 获取请求地址的返回数据 前后台进行相应的解析就可以了 相对于来说比较传统
还有一种是比较方便的 用自带的 System.Net 的 WebClient
public void RequestWeb(object msg)
{
WebClient client = new WebClient();
client.UploadStringAsync(new Uri("http://localhost:1234/handler1.ashx"), "");
client.UploadStringCompleted += client_UploadStringCompleted;
}
void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
WriteInLog(e.Result);
}
这个组件还是比较方便的包含了大多数需要的方法包括Async线程等等 网上的资料很多