loyung

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

POST方法:

数据提交

    /// <summary>
    /// POST提交数据接收字符json
    /// </summary>
    /// <param name="url">远程服务器路径</param>
    /// <param name="postData">提交数据</param>
    /// <returns>接收数据</returns>
    public static string PostData(string url, byte[] postData)
    {
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";
        myRequest.ContentLength = postData.Length;

        Stream newStream = myRequest.GetRequestStream();
        // Send the data. 
        newStream.Write(postData, 0, postData.Length);
        newStream.Close();

        // Get response 
        HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
        StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
        return reader.ReadToEnd();
    }

 注意:POST提交必须有内容提交才可以,否则会报远程服务器返回错误: (411) 所需的长度错误。存在post内容为null的可以修改访问方式为Get

 

/// <summary>
        /// POST提交数据接收字符json
        /// </summary>
        /// <param name="url">远程服务器路径</param>
        /// <param name="postData">提交数据</param>
        /// <returns>接收数据</returns>
        public static string PostData(string url, byte[] postData)
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
            if (postData != null)
            {
                myRequest.Method = "POST";
                // Send the data. 
                myRequest.ContentType = "application/x-www-form-urlencoded";
                //myRequest.ContentType = "application/json";//josn格式数据提交
                myRequest.ContentLength = postData.Length;
                Stream newStream = myRequest.GetRequestStream();
                newStream.Write(postData, 0, postData.Length);
                newStream.Close();
            }
            else
            {
                myRequest.Method = "GET";//postData无数据时
            }
            // Get response 
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            return reader.ReadToEnd();
        }

 

调用POST提交结果

    public string SendSMS(string mobilenumber,string content)
    {
        string Message = "";
          //远程提交地址
       string RemoteUrl = "http://www.cangcool.com/sms.action?";
       string URL = RemoteUrl;
       string Data = string.Format("u={0}&p={1}&m={2}&c={3}&s={4}&g={5}", _UserName, _Pwd, mobilenumber, content,"","");
        byte[] ByteData=System.Text.Encoding.Default.GetBytes(Data);
        Message = PostData(URL, ByteData);
        //JavaScriptSerializer serializer = new JavaScriptSerializer();
        //jsonOut = serializer.Deserialize<RecordInfo>(strJsonInput);
        return Message;
    }

直接加载POST无参提交数据

 public ActionResult PayOnline()
       {
           System.IO.Stream sm = Request.InputStream;
           int len = (int)sm.Length;//post数据长度
           byte[] inputByts = new byte[len];//字节数据,用于存储post数据
           sm.Read(inputByts, 0, len);//将post数据写入byte数组中
           sm.Close();//关闭IO流
           string data = Encoding.GetEncoding("UTF-8").GetString(inputByts);//转为UTF-8编码
           data = Server.UrlDecode(data);
           return View(data);
       }

 C#POST提交文件上传

WebClient webclient = new WebClient();
        byte[] responseArray = webclient.UploadFile("http://localhost:51881/API/Aliyun/UploadBusinessCard?ClientKey=111&UserID=654&File_key=file ", "POST", @"D:\1.jpg");
        string getPath = System.Text.Encoding.GetEncoding("UTF-8").GetString(responseArray);

 POST提交参数数据和上传文件

 private static string HttpPostData(string url, int timeOut, string fileKeyName,string fileName, byte[] fileData,Dictionary<string,string> stringDict)
        {
            string responseContent;
            var memStream = new MemoryStream();
            var webRequest = (HttpWebRequest)WebRequest.Create(url);
            // 边界符  
            var boundary = "---------------" + DateTime.Now.Ticks.ToString("x");
            // 边界符  
            var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
            //var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);//文件路径方式获取文件流
            var fileStream = new MemoryStream(fileData);
            // 最后的结束符  
            var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");
            // 设置属性  
            webRequest.Method = "POST";
            webRequest.Timeout = timeOut;
            webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
            // 写入文件  
            const string filePartHeader =
                "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" +
                 "Content-Type: application/octet-stream\r\n\r\n";
            var header = string.Format(filePartHeader, fileKeyName, fileName);
            var headerbytes = Encoding.UTF8.GetBytes(header);
            memStream.Write(beginBoundary, 0, beginBoundary.Length);
            memStream.Write(headerbytes, 0, headerbytes.Length);
            var buffer = new byte[1024];
            int bytesRead; // =0  
            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
            {
                memStream.Write(buffer, 0, bytesRead);
            }
            // 写入字符串的Key  
            var stringKeyHeader = "\r\n--" + boundary +
                                   "\r\nContent-Disposition: form-data; name=\"{0}\"" +
                                   "\r\n\r\n{1}\r\n";
            foreach (byte[] formitembytes in from string key in stringDict.Keys
                                             select string.Format(stringKeyHeader, key, stringDict[key])
                                                 into formitem
                                             select Encoding.UTF8.GetBytes(formitem))
            {
                memStream.Write(formitembytes, 0, formitembytes.Length);
            }
            // 写入最后的结束边界符  
            memStream.Write(endBoundary, 0, endBoundary.Length);
            webRequest.ContentLength = memStream.Length;
            var requestStream = webRequest.GetRequestStream();
            memStream.Position = 0;
            var tempBuffer = new byte[memStream.Length];
            memStream.Read(tempBuffer, 0, tempBuffer.Length);
            memStream.Close();
            requestStream.Write(tempBuffer, 0, tempBuffer.Length);
            requestStream.Close();
            var httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
            using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(),
                                                            Encoding.GetEncoding("utf-8")))
            {
                responseContent = httpStreamReader.ReadToEnd();
            }
            fileStream.Close();
            httpWebResponse.Close();
            webRequest.Abort();
            return responseContent;
        }

 调用方法:

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            var url = "https://fileapi.instrument.com.cn/upflash/upimg.ashx";

            string[] filetype = { ".rar", ".doc", ".docx", ".zip", ".pdf", ".txt", ".swf", ".wmv", ".ppt", ".pptx", ".caj", ".jpg", ".jpeg", ".gif", ".rar", ".zip", ".xls", ".xlsx" };    //文件允许格式

            //文件大小限制,单位MB,同时在web.config里配置环境默认为100MB
            var uploadFilesSize = IM.Utils.Configuration.AppSettings("UploadFilesSize");
            var size = 100;
            if (!string.IsNullOrEmpty(uploadFilesSize))
            {
                size = Convert.ToInt32(uploadFilesSize);
            }
            var colname = HttpContext.Current.Request["upuser"];

            if (string.IsNullOrEmpty(colname))
            {
                colname = "attachment";
            }
            var file = context.Request.Files[0];
            byte[] bytes = new byte[file.ContentLength];
            using (BinaryReader reader = new BinaryReader(file.InputStream, Encoding.UTF8))
            {
                bytes = reader.ReadBytes(file.ContentLength);
            }
            var rel=HttpPostData(url, 1000 * 60 * 3, file.FileName, file.FileName, bytes, new Dictionary<string, string>() { { "colname", colname } });
            HttpContext.Current.Response.Write(rel);
        }
View Code

 

GET方法:

数据提交

    /// <summary>
    /// GET提交
    /// </summary>
    /// <param name="strUrl">远程服务器路径</param>
    /// <param name="charset">字符编码</param>
    /// <returns></returns>
    public static string GeData(string strUrl, string charset)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
        request.Method = "GET";
        request.Timeout = 60000;
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream streamReceive = response.GetResponseStream();
        Encoding encoding = Encoding.Default;
        if (!string.IsNullOrEmpty(charset) && Encoding.GetEncoding(charset) != Encoding.Default)
        {
            encoding = Encoding.GetEncoding(charset);
        }

        StreamReader streamReader = new StreamReader(streamReceive, encoding);
        return streamReader.ReadToEnd();
    }

调用GET提交结果

    public string SendSMS(string mobilenumber, string content)
    {
        string Message = "";
        //远程提交地址
        string RemoteUrl = "http://www.cangcool.com/sms.action?";
        string Data = string.Format("u={0}&p={1}&m={2}&c={3}&s={4}&g={5}", _UserName, _Pwd, mobilenumber, content, "", "");
        string URL = RemoteUrl + Data;
        Message = GeData(URL,"UTF-8");
        return Message;
    }

 

posted on 2015-11-14 10:03  loyung  阅读(1806)  评论(0编辑  收藏  举报