WinForms VS Web
怎么样才能让WinForms程序和Web网站进行Response,Resquest和Cookies通信,就WinForms向网站进行这类操作,不需要调用WebService和Remoting等,就像网站内部通信一样,网站类型不限,可以是Asp.net也可以是JSP或者PHP或者Asp反正什么都行,只要能做到这种通信就可以了,哎。。。啰嗦了。。
[解决办法]
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Drawing;
namespace FundindexManager
{
public class HttpAccess
{
#region Construct
public HttpAccess()
{
//
// TODO: Add constructor logic here
//
}
#endregion
#region HttpAccess
#region EncodingName
private string m_encodingName = System.Text.Encoding.Default.BodyName;
public string EncodingName
{
get { return m_encodingName; }
set { m_encodingName = value; }
}
#endregion
#region URL
private string m_URL = " ";
public string URL
{
get { return m_URL; }
set { m_URL = value; }
}
#endregion
#region Post Cookie
private System.Net.CookieCollection m_PostCookie;
public System.Net.CookieCollection PostCookie
{
get { return m_PostCookie; }
set { m_PostCookie = value; }
}
#endregion
#region Get Cookie
private System.Net.CookieCollection m_GetCookie;
public System.Net.CookieCollection GetCookie
{
get { return m_GetCookie; }
set { m_GetCookie = value; }
}
#endregion
#region Post Data
private string m_PostData;
public string PostData
{
get { return m_PostData; }
set { m_PostData = value; }
}
#endregion
#region Request AllowAutoRedirect
private bool m_AllowAutoRedirect = true;
public bool AllowAutoRedirect
{
get { return m_AllowAutoRedirect; }
set { m_AllowAutoRedirect = value; }
}
#endregion
#region Request Method
private string m_RequestMethod = "GET ";
public string RequestMethod
{
get { return m_RequestMethod; }
set { m_RequestMethod = value; }
}
#endregion
#region httpAccess Error
private Exception m_httpAccessError;
public Exception HttpAccessError
{
get { return m_httpAccessError; }
set { m_httpAccessError = value; }
}
#endregion
#region Image
private Image m_WebImage;
public Image WebImage
{
get { return m_WebImage; }
set { m_WebImage = value; }
}
#endregion
#endregion
#region HttpRequestExec
/// <summary>
/// HttpRequestExec
/// </summary>
/// <returns> </returns>
public string HttpRequestExec()
{
HttpWebResponse response = null;
HttpWebRequest request = null;
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(m_encodingName);
string strReturn = " ";
try
{
#region
if (m_URL == " ") return strReturn;
request = WebRequest.Create(m_URL) as HttpWebRequest;
request.AllowAutoRedirect = m_AllowAutoRedirect;
//WebProxy myProxy=new WebProxy();
//// Obtain the 'Proxy ' of the Default browser.
//myProxy=(WebProxy)request.Proxy;
//
//// Create a new Uri object.
//Uri newUri=new Uri( "Ase_server01:8080 ");
//// Associate the newUri object to 'myProxy ' object so that new myProxy settings can be set.
//myProxy.Address=newUri;
//
//request.Proxy=myProxy;
if (m_AllowAutoRedirect)
{
request.MaximumAutomaticRedirections = 3;
}
request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot) ";
request.KeepAlive = true;
request.Timeout = 50000;
if (m_PostCookie != null)
{
if (m_PostCookie.Count > 0)
{
System.Uri u = new Uri(m_URL);
foreach (System.Net.Cookie c in m_PostCookie)
{
c.Domain = u.Host;
}
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(m_PostCookie);
}
}
request.Method = m_RequestMethod;
if (m_RequestMethod == "POST ")
{
request.ContentType = "application/x-www-form-urlencoded ";
byte[] data = encoding.GetBytes(m_PostData);
request.ContentLength = data.Length;
Stream outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
}
#endregion
response = request.GetResponse() as HttpWebResponse;
for (int i = 0; i < response.Headers.Count; i++)
{
string strtext;
strtext = response.Headers.GetKey(i) + ": " + response.Headers.Get(i) ;
Console.WriteLine(strtext);
}
Stream instream = response.GetResponseStream();
string strContentType = response.Headers[ "Content-Type "];
FilterInfo(strContentType, instream);
StreamReader sr = new StreamReader(instream, encoding);
string strhtml = sr.ReadToEnd();
strReturn = strhtml;
if (response.Cookies.Count > 0)
{
m_GetCookie = response.Cookies;
}
return strReturn;
}
catch (Exception err)
{
m_httpAccessError = err;
return "-999 ";
}
}
private void FilterInfo(string strContentType,Stream instream)
{
try
{
switch (strContentType)
{
case "text/plain ":
break;
case "image/gif ":
case "image/Gif ":
DisplayImage(instream);
break;
case "image/jpeg ":
DisplayImage(instream);
break;
case "image/Png ":
DisplayImage(instream);
break;
case "text/xml; charset=utf-8 ":
break;
}
}
catch
{
}
finally
{
//m_abyteObj = null;
}
}
private void DisplayImage(Stream streamImage)
{
m_WebImage = Image.FromStream(streamImage);
}
#endregion
}
}