在unity中使用HttpWebRequest进行post/get上传,c#代码 | 您所在的位置:网站首页 › 代码中的info › 在unity中使用HttpWebRequest进行post/get上传,c#代码 |
1、get方式上传 /// /// HttpGet方式 /// contentType application/json or application/xml /// /// /// /// 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数据 /// /// /// /// /// 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(result); if (json.errorcode == 0) { res = "成功"; return res; } else { return result; } } catch (Exception ex) { return ex.Message; } } /// /// 上传返回格式 /// public class AjaxClassFileResult { /// /// 是否成功 /// public int errorcode { get; set; } /// /// 是否数据 /// public string message { get; set; } /// /// 消息 /// public object data { get; set; } } 3、post方式上传文件 /// /// post上传文件 /// /// 文件路径 /// 文件名 /// /// text/html : HTML格式, text/plain :纯文本格式, text/xml :XML格式, image/gif :gif图片格式, image/jpeg :jpg图片格式, image/png:png图片格式 /// /// 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(getResult); Debug.Log("返回:" + getResult.ToString()); if (json.errorcode==0) { if (!string.IsNullOrEmpty(json.data.ToString())) { string data= json.data.ToString(); var resId = JsonConvert.DeserializeObject(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; } /// /// data中的文件id /// public class AjaxIdResult { /// /// id /// 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); |
CopyRight 2018-2019 实验室设备网 版权所有 |