1、get方式上传
/// <summary>
/// HttpGet方式
/// <para>contentType application/json or application/xml</para>
/// </summary>
/// <param name="Url"></param>
/// <param name="contentType"></param>
/// <returns></returns>
public string HttpGet(string url)
{
try
{
string retString = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/json;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(myResponseStream);
retString = streamReader.ReadToEnd();
streamReader.Close();
myResponseStream.Close();
return retString;
}
catch (Exception ex)
{
throw ex;
}
}
2、post上传json数据
/// <summary>
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public string HttpPostUpload(string url, string param)
{
string res = "";
try
{
string strURL = url;
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
// request.ContentType = "application/json;charset=UTF-8";
request.ContentType = "application/json";
//Accept - Language:zh - CN,zh; q = 0.8
request.Headers.Add("Accept-Language", "zh - CN,zh; q = 0.8");
指定客户端代理的方式
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2560.0 Safari/537.36";
string paraUrlCoded = param;
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
response.Close();
var json = JsonConvert.DeserializeObject<AjaxClassFileResult>(result);
if (json.errorcode == 0)
{
res = "成功";
return res;
}
else
{
return result;
}
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 上传返回格式
/// </summary>
public class AjaxClassFileResult
{
/// <summary>
/// 是否成功
/// </summary>
public int errorcode { get; set; }
/// <summary>
/// 是否数据
/// </summary>
public string message { get; set; }
/// <summary>
/// 消息
/// </summary>
public object data { get; set; }
}
3、post方式上传文件
/// <summary>
/// </summary>post上传文件
/// <param name="url"></param>
/// <param name="file"></param>文件路径
/// <param name="paramName"></param>文件名
/// <param name="contentType"></param>
/// text/html : HTML格式, text/plain :纯文本格式, text/xml :XML格式, image/gif :gif图片格式, image/jpeg :jpg图片格式, image/png:png图片格式
/// <param name="collection"></param>
/// <returns></returns>
public string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection collection)
{
var result = string.Empty;
var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
var boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
request.KeepAlive = true;
request.Credentials = CredentialCache.DefaultCredentials;
var stream = request.GetRequestStream();
var template = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in collection.Keys)
{
stream.Write(boundarybytes, 0, boundarybytes.Length);
var formitem = string.Format(template, key, collection[key]);
var formitembytes = Encoding.UTF8.GetBytes(formitem);
stream.Write(formitembytes, 0, formitembytes.Length);
}
stream.Write(boundarybytes, 0, boundarybytes.Length);
var headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
var header = string.Format(headerTemplate, paramName, file, contentType);
var headerbytes = Encoding.UTF8.GetBytes(header);
stream.Write(headerbytes, 0, headerbytes.Length);
var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
var buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
stream.Write(buffer, 0, bytesRead);
}
fileStream.Close();
var bytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
stream.Write(bytes, 0, bytes.Length);
stream.Close(); WebResponse wresp = null;
try
{
wresp = request.GetResponse();
var stream2 = wresp.GetResponseStream();
var reader2 = new StreamReader(stream2);
var getResult = reader2.ReadToEnd();
var json = JsonConvert.DeserializeObject<AjaxClassFileResult>(getResult);
Debug.Log("返回:" + getResult.ToString());
if (json.errorcode==0)
{
if (!string.IsNullOrEmpty(json.data.ToString()))
{
string data= json.data.ToString();
var resId = JsonConvert.DeserializeObject<AjaxIdResult>(data);
if (!string.IsNullOrEmpty(resId.ToString()))
{
result = resId.id.ToString();
}
}
}
}
catch (Exception ex)
{
Debug.Log(ex.Message);
if (wresp != null)
{
wresp.Close();
wresp = null;
}
}
finally
{
request = null;
}
return result;
}
/// <summary>
/// data中的文件id
/// </summary>
public class AjaxIdResult
{
/// <summary>
/// id
/// </summary>
public string id { get; set; }
}
=========================以上是工具类使用=============================
以下是使用,以post上传文件示例
NameValueCollection collection = new NameValueCollection
{
//上传的参数
{"v", InterFacePort.Instance().Version},
{"ts", ts},
{"sign", sign},
{"user", InterFacePort.Instance().Client_SN},
{"fileName", Path.GetFileName(imgPath)}
};
string backResult = HttpUploadFile(baseUrl, imgPath, "file", "image/jpeg", collection);