在unity中使用HttpWebRequest进行post/get上传,c#代码 您所在的位置:网站首页 代码中的info 在unity中使用HttpWebRequest进行post/get上传,c#代码

在unity中使用HttpWebRequest进行post/get上传,c#代码

2023-07-12 20:21| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有