/// <summary>
/// 发送xml请求
/// </summary>
/// <param name="requestUriString">接口url地址</param>
/// <param name="requestXml">请求的xml</param>
/// <returns>返回的xml对象</returns>
private XElement PostRequest(string requestUriString, string requestXml)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(requestUriString);
string postData = requestXml;
byte[] buffer = Encoding.UTF8.GetBytes(postData);
webRequest.Method = "POST"; // 传递的方法,必须要写,而已Get必须大写。
webRequest.ContentLength = buffer.Length;
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
webRequest.Headers.Add("Cache-Control", "no-cache");
webRequest.Accept = "*/*";
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse webResponse = null;
Stream responseStream = null;
XmlTextReader objXmlReader = null;
Stream stream = null;
XElement xml = null;
try
{
stream = webRequest.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
try
{
webResponse = (HttpWebResponse)webRequest.GetResponse();
}
catch
{
return null;
}
if (HttpStatusCode.OK == webResponse.StatusCode)
{
// 得到回应过来的流
// HttpStatusCode.OK,指示请求成功,且请求的信息包含在响应中
responseStream = webResponse.GetResponseStream();
objXmlReader = new XmlTextReader(responseStream); // Load response stream into XMLReader
xml = XElement.Load(objXmlReader);
}
else
{
AppException app = new AppException("请求失败,状态" + webResponse.StatusCode.ToString() + ", " + webResponse.StatusDescription);
throw app;
}
}
finally
{
if (null != webResponse)
{
webResponse.Close(); // 响应关闭,要不会占用网络资源
}
if (null != objXmlReader)
{
objXmlReader.Close();
}
if (null != responseStream)
{
responseStream.Close();
}
stream.Close();
}
return xml;
}