模拟Http请求(跨服务器上传图片)
public static string ImgUpload(HttpPostedFileBase imgData, string token, string service, string imgUploadUrl) { #region 构造HTTP请求 //构造请求地址 string url = imgUploadUrl + "/Upload.api"; //设置HttpWebRequest基本信息 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); //设置请求方式:post request.Method = "POST"; //设置boundaryValue string boundaryValue = DateTime.Now.Ticks.ToString("x"); string boundary = "--" + boundaryValue; request.ContentType = "\r\nmultipart/form-data; boundary=" + boundaryValue; //设置KeepAlive request.KeepAlive = true; //设置请求数据,拼接成字符串 StringBuilder sbHtml = new StringBuilder(); sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"Token\"\r\n\r\n" + token + "\r\n"); sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"Service\"\r\n\r\n" + service + "\r\n"); sbHtml.Append(boundary + "\r\nContent-Disposition: form-data; name=\"FileData\"; filename=\"" + imgData.FileName + "\""); sbHtml.Append("\"\r\nContent-Type:application/octet-stream\r\n\r\n"); string postHeader = sbHtml.ToString(); //将请求数据字符串类型根据编码格式转换成字节流 Encoding code = Encoding.GetEncoding("utf-8"); byte[] postHeaderBytes = code.GetBytes(postHeader); byte[] boundayBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "--\r\n"); //设置长度 long length = postHeaderBytes.Length + imgData.ContentLength + boundayBytes.Length; request.ContentLength = length; #endregion #region 发送请求 //请求远程HTTP Stream requestStream = request.GetRequestStream(); Stream myStream; try { //发送数据请求服务器 requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); byte[] buffer = new byte[imgData.ContentLength]; imgData.InputStream.Read(buffer, 0, imgData.ContentLength); requestStream.Write(buffer, 0, imgData.ContentLength); requestStream.Write(boundayBytes, 0, boundayBytes.Length); HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse(); myStream = HttpWResp.GetResponseStream(); } catch (Exception ex) { return "报错:" + ex.Message; } finally { if (requestStream != null) { requestStream.Close(); } } #endregion #region 结果处理 //读取返回处理结果 StreamReader reader = new StreamReader(myStream, code); StringBuilder responseData = new StringBuilder(); String line; while ((line = reader.ReadLine()) != null) { responseData.Append(line); } myStream.Close(); //将返回的json字符串序列化 SecurityUploadResult model = new SecurityUploadResult(); model = SlJson.FromJson<SecurityUploadResult>(responseData.ToString()); if (model.Code == "100") return model.Url; else return model.Error; #endregion }
真正的大师永远怀着一颗学徒的心。

浙公网安备 33010602011771号