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, , 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, , 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, , 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, , beginBoundary.Length);
memStream.Write(headerbytes, , headerbytes.Length);
var buffer = new byte[];
int bytesRead; // =0
while ((bytesRead = fileStream.Read(buffer, , buffer.Length)) != )
{
memStream.Write(buffer, , 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, , formitembytes.Length);
}
// 写入最后的结束边界符
memStream.Write(endBoundary, , endBoundary.Length);
webRequest.ContentLength = memStream.Length;
var requestStream = webRequest.GetRequestStream();
memStream.Position = ;
var tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, , tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, , 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 = ;
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[];
byte[] bytes = new byte[file.ContentLength];
using (BinaryReader reader = new BinaryReader(file.InputStream, Encoding.UTF8))
{
bytes = reader.ReadBytes(file.ContentLength);
}
var rel=HttpPostData(url, * * , file.FileName, file.FileName, bytes, new Dictionary<string, string>() { { "colname", colname } });
HttpContext.Current.Response.Write(rel);
}

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 = ;
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;
}

ASP.NET的POST和GET提交并接收处理返回值的更多相关文章

  1. ASP.NET调用存储过程并接收存储过程返回值

    ASP.NET调用存储过程并接收存储过程返回值 2010-08-02 11:26:17|  分类: C#|字号 订阅       2010年02月27日 星期六 23:52 假设表结构Create T ...

  2. springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)

    这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注册 ...

  3. (四)Asp.net web api中的坑-【api的返回值】

    void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 我这里并不想赘述这些返回类型, 可以参考博文http://blog.csdn.net/leon ...

  4. ASP.Net MVC 在ajax接收controller返回值为Json数据

    首先,再次回忆一下ajax的标准用法:(这张图写的比较详细了)(转) 页面部分ajax代码: $.ajax({            url: "/Home/Login?account=&q ...

  5. PHP模拟POST提交数据并获得返回值之CURL方法(使用PHP extension,然后使用php_curl.dll,很不错)

    今天公司做个东西,需要条用同事的接口,我的代码和他的代码不在同一个域下,但是都是子域. a.ifensi.com与b.ifensi.com的关系. 我需要传递一个关联数组过去,他那边给我返回一个jso ...

  6. asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新

    今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容.作为积累,记录一个简单的实现模型. 图1  用到的文件 从图1中我们可以看到,只用到了 ...

  7. ajax提交 返回值为undefined

    easyui  form 表单提交成功,但是返回值为undefined,原因是返回值不是json格式,是字符串的格式,那么解决办法就是把其转化成json格式 示例: $(function () { / ...

  8. ASP.NET MVC 之各种jQuery提交模式实例

    1.$.ajax提交 var _data = { "dictItemID": dictItemID, "itemType": itemType, "i ...

  9. asp.net 中点击button弹出模式对话框,选择值后返回到页面中(window.showModalDialog实现)

    <td>现从事专业</td><td>       <asp:TextBox ID="tbMajor" runat="server ...

随机推荐

  1. c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)

    1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...

  2. 工作中遇到的问题--实现CustomerSetting的实时更新

    首先在项目运行时就初始化CustomerSettings的值,采用@Bean,默认是singtone模式,只会加载一次. @Configuration@Order(3)@EnableWebMvcSec ...

  3. phpwind8.7升级9.0.1过程(二)8.7正式升级9.0

    首先备份 1. 给本地做备份将网站根目录下面的所有文件先做备份. 2. 给本地数据库做备份 3. 了解升级的具体过程 phpwind8.7升级到9.0需要首先升级到phpwind9.0的原生版本即:2 ...

  4. 课堂所讲整理:super和转型(修改版)

    创建父类: package org.hanqi.pn0120; public class Father { private String name; private int age; public S ...

  5. MySql中的skip-name-resovle

    mysql用的一直很好用,有一次断网了,发现连接虚拟机里的mysql特别费劲,几经扔腾,才知道是因为断网以后,名字解析这块有点问题,在my.cnf文件中加了一条skip-name-resovle,果断 ...

  6. Android平台下的JNI开发

    JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程.要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Ec ...

  7. [POI 2008]Mafia

    这题目写了我好长时间,但还是几乎(不要在意细节)一遍 A 了喵~ 据说有代码奇短的,Orz 思路巧妙的大爷 想我这种 Brute Force 写写的傻 X 真是代码量飞起来了耶,喵~ 如果把每个人看成 ...

  8. unity3d用鼠标拖动物体的一段代码

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 这是一段拖动物体的代码,比较简洁明了,对了解uni ...

  9. Andorid面试问题整理

    Acitivty的四中启动模式与特点. standard:默认的启动模式 singleTop:适合那种接受通知启动的页面,比如新闻客户端之类的,可能会给你推送好几次 ,但是每次都是打开同一张页面调用o ...

  10. echarts简单使用

    最近在做一个项目,开始使用的是acharts,在电脑端访问的效果还真不错,但是放到手机端访问就惨了,尤其是iOS系统上,各种不兼容,后来准备换收费的hightcharsts,无意间发现有个免费的ech ...