You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
7.8 KiB

3 years ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace ImageClient.Common
{
public class HttpHelper
{
public bool UploadImage(string fullName) {
return true;
}
#region 获取指定WEB页面
/// GET方法获取页面
/// 函数名:GetWebUrl
/// 功能描述:WebClient 获取页面
/// 处理流程:
/// 算法描述:
/// 作 者: lxc
/// 日 期: 2012-10-09
/// 修 改:
/// 日 期:
/// 版 本:
public static string GetWebUrl(string strurl)
{
WebClient webClient = new WebClient();
try
{
webClient.Credentials = CredentialCache.DefaultCredentials;
Byte[] pageData = webClient.DownloadData(strurl);
//string pageHtml = Encoding.UTF8.GetString(pageData);
string pageHtml = Encoding.Default.GetString(pageData);
return pageHtml;
}
catch (WebException webEx)
{
return "error_GetWebUrl:" + webEx.ToString();
}
finally
{
webClient = null;
}
}
#endregion
#region PostUrl(String url, String paramList)
/// <summary>
/// POST方法获取页面
/// </summary>
/// <param name="url"></param>
/// <param name="paramList">格式: a=xxx&b=xxx&c=xxx</param>
/// <returns></returns>
public static string PostUrl(String url, String paramList)
{
HttpWebResponse res = null;
string strResult = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 3000;
req.Method = "POST";
req.KeepAlive = true;
//req.ContentType = "application/josn";
req.ContentType = "application/x-www-form-urlencoded";
//req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
CookieContainer cookieCon = new CookieContainer();
req.CookieContainer = cookieCon;
StringBuilder UrlEncoded = new StringBuilder();
Char[] reserved = { '?', '=', '&' };
byte[] SomeBytes = null;
if (paramList != null)
{
int i = 0, j;
while (i < paramList.Length)
{
j = paramList.IndexOfAny(reserved, i);
if (j == -1)
{
// UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i)));
UrlEncoded.Append((paramList.Substring(i, paramList.Length - i)));
break;
}
// UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i)));
UrlEncoded.Append((paramList.Substring(i, j - i)));
UrlEncoded.Append(paramList.Substring(j, 1));
i = j + 1;
}
SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());
req.ContentLength = SomeBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
newStream.Close();
}
else
{
req.ContentLength = 0;
}
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
// Encoding encode = System.Text.Encoding.Default;//GetEncoding("utf-8");
string encodeheader = res.ContentType;
string encodestr = System.Text.Encoding.UTF8.HeaderName;
if ((encodeheader.IndexOf("charset=") >= 0) && (encodeheader.IndexOf("charset=GBK") == -1) && (encodeheader.IndexOf("charset=gbk") == -1))
{
int i = encodeheader.IndexOf("charset=");
encodestr = encodeheader.Substring(i + 8);
}
Encoding encode = System.Text.Encoding.GetEncoding(encodestr);//GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream, encode);
Char[] read = new Char[256];
int count = sr.Read(read, 0, 256);
while (count > 0)
{
String str = new String(read, 0, count);
strResult += str;
count = sr.Read(read, 0, 256);
}
}
catch (Exception e)
{
strResult = e.ToString();
}
finally
{
if (res != null)
{
res.Close();
}
}
return strResult;
}
#endregion
/// <summary>
/// WebClient上传文件至服务器
/// </summary>
/// <param name="localFilePath">文件名,全路径格式</param>
/// <param name="url">服务器文件夹路径</param>
/// <returns></returns>
public bool UpLoadFile(string localFilePath, string url)
{
string uriString;
// 得到文件名,文件扩展名字,服务器路径
uriString = url + localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);
// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
myWebClient.Headers.Add("Content-Type", "multipart/form-data;charset=utf-8;boundary=.png");
// 要上传的文件
FileStream fs = new FileStream(localFilePath, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
try
{
//使用UploadFile方法可以用下面的格式
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(url, "POST");
if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
}
else
{
// MessageBox.Show("文件目前不可写!");
}
postStream.Close();
}
catch
{
//MessageBox.Show("文件上传失败,请稍候重试~");
return false;
}
return true;
}
public bool UpLoadFileExe(string url, string fileanme) {
string exename = "html.exe";
// @"-url http://127.0.0.1:9900/upload/k001/zf1x -filename C:/GOPATH/src/eassoft/imageserver/html/广东美的集团有限公司-公章1.bmp";
string formatcmd = "-url \"{0}\" -filename \"{1}\"";
string cmd = string.Format(formatcmd,url,fileanme);
Process myprocess = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo(exename, cmd);
myprocess.StartInfo = startInfo;
//通过以下参数可以控制exe的启动方式,具体参照 myprocess.StartInfo.下面的参数,如以无界面方式启动exe等
myprocess.StartInfo.UseShellExecute = false;
myprocess.StartInfo.CreateNoWindow = true;
myprocess.Start();
myprocess.WaitForExit(30000);
myprocess.Close();
return true;
}
}
}