using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace BatchService.Framework.Utility
{
///
/// 向远程Url Post/Get数据类
///
public class NetHelper
{
public static T HttpPost(string uri, object data, SerializationType serializationType)
{
string responseText = HttpPost(uri, data, serializationType);
T t = default(T);
if (serializationType == SerializationType.Xml)
{
t = (T)SerializationHelper.XmlDeserialize(typeof(T), responseText);
}
else if (serializationType == SerializationType.Json)
{
t = (T)SerializationHelper.JsonDeserialize(typeof(T), responseText);
}
return t;
}
public static string HttpPost(string uri, object data, SerializationType serializationType)
{
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
string dataStr = string.Empty;
if (data is string)
{
dataStr = (string)data;
}
else
{
if (serializationType == SerializationType.Xml)
{
dataStr = SerializationHelper.XmlSerialize(data);
object o = SerializationHelper.XmlDeserialize(data.GetType(), dataStr);
}
else if (serializationType == SerializationType.Json)
{
dataStr = SerializationHelper.JsonSerialize(data);
}
}
CNNWebClient wc = new CNNWebClient();
wc.Timeout = 300;
LogHelper.Debug(String.Format("uri:{0},data:{1}", uri, data));
var t = wc.UploadData(uri, "POST", Encoding.UTF8.GetBytes(dataStr));
string tText = Encoding.UTF8.GetString(t);
/*
System.Diagnostics.Debug.WriteLine(tText);
byte[] buffer;
Stream stream;
if (!string.IsNullOrWhiteSpace(dataStr))
{
buffer = Encoding.UTF8.GetBytes(dataStr);
stream = request.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
}
//request.d
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
stream = response.GetResponseStream();
buffer = new byte[response.ContentLength];
stream.Read(buffer, 0, (int)response.ContentLength);
//string encoding = string.IsNullOrWhiteSpace(response.ContentEncoding) ? "uft-8" : response.ContentEncoding;
string responseText = Encoding.UTF8.GetString(buffer);
System.Diagnostics.Debug.WriteLine(responseText);
return responseText;
*/
return tText;
}
public static string HttpPost(string uri, System.Collections.Specialized.NameValueCollection data)
{
CNNWebClient wc = new CNNWebClient();
wc.Encoding = Encoding.UTF8;
wc.Timeout = 300;
var t = wc.UploadValues(uri, "POST", data);
string tText = Encoding.UTF8.GetString(t);
return tText;
}
public static T HttpGet(string uri, SerializationType serializationType)
{
string responseText = HttpGet(uri);
T t = default(T);
if (serializationType == SerializationType.Xml)
{
t = (T)SerializationHelper.XmlDeserialize(typeof(T), responseText);
}
else if (serializationType == SerializationType.Json)
{
t = (T)SerializationHelper.JsonDeserialize(typeof(T), responseText);
}
return t;
}
public static string HttpGet(string uri)
{
StringBuilder respBody = new StringBuilder();
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
byte[] buffer = new byte[8192];
Stream stream;
stream = response.GetResponseStream();
int count = 0;
do
{
count = stream.Read(buffer, 0, buffer.Length);
if (count != 0)
respBody.Append(Encoding.UTF8.GetString(buffer, 0, count));
}
while (count > 0);
string responseText = respBody.ToString();
return responseText;
}
public class CNNWebClient : WebClient
{
private int _timeOut = 200;
///
/// 过期时间
///
public int Timeout
{
get
{
return _timeOut;
}
set
{
if (value <= 0)
_timeOut = 200;
_timeOut = value;
}
}
///
/// 重写GetWebRequest,添加WebRequest对象超时时间
///
///
///
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.Timeout = 1000 * Timeout;
request.ReadWriteTimeout = 1000 * Timeout;
return request;
}
}
}
}