所有的controller 都继承自 我定义的父类 basecontroller ,basecontroller 继承自apicontroller。
在basecontroller中重写方法 public override Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext,System.Threading.CancellationToken cancellationToken)
在这个方法里
获取get传入的数据 使用 httpContext.Request.QueryString
获取post传入的数据怎么 取??
求教。大神们来吧
Request.QueryString(取得地址栏参数值),获取地址栏中的参数,意思就是取得 Url ”?"号后面的参数值.如果参数有多个就用 ”&” 符号连接起来。
取值:Request.QueryString["Url地址栏中的参数名称"]
Request.Form(取得表单参数值),获取提交的Form中的元素的值。
取值:Request.Form["表单元素的name属性名称"]
这样得不到的,你试过吗?
@simadi: 我试过啊,确定,肯定,以及一定,你的参数传递是哪样的?
@晓菜鸟: 具体的代码在这里 http://q.cnblogs.com/q/63832/
@simadi: 从winform窗体里面传值过来?
@晓菜鸟: 是的
@simadi: 待会忙完了写个例子帮你看看问题所在吧,稍等。
@simadi:
在Web API的controller当中,只要方法名以“Get”开头,就会匹配所有的Get请求,同理以Post开头的方法,
将匹配所有的Post请求。
HttpContext.Request.Form["name"]
这样得不到的,你试过吗?
byte[] byts = new byte[HttpContext.Current.Request.InputStream.Length];
HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length);
string req = System.Text.Encoding.Default.GetString(byts);
这是直接获取post上来的字符流数据。什么编码送的什么编码收就没有问题了。如果是你发送的表单就Request.Form去收。记住字符流数据只能收一次哟。
我现在也遇到这样的问题,
// 把文件读取到二进制数组
FileStream fs = new FileStream(_path, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024 * 1024];
await fs.ReadAsync(buffer, 0, buffer.Length);
HttpResponseMessage response = await client.PostAsJsonAsync("http://localhost:50935/api/User/ postuserinfo", buffer);
string jsonData = await response.Content.ReadAsStringAsync();
string a=JsonConvert.DeserializeObject<string>(jsonData);
这样我在api 的postuserinfo里面怎么来接受数据?新手啊
修改了一下回答
//api
public string postuserinfo(byte[] by)
{
//FileStream fs = new FileStream();
byte[] byts = new byte[HttpContext.Current.Request.InputStream.Length];
byts = by;
HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length);
string req = System.Text.Encoding.Default.GetString(byts);
return req;
}
结果返回的中文乱码,不过还是解决了主要问题,在这里提一个问题:如果我要上传视频文件也可以这么写吗?
没发现一个回答正确的
正确答案如下
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context HttpRequestBase request = context.Request;//定义传统request对象 string name = request.Form["name"];
顶你,顶!顶!顶!
可是如果Request.Properties里没有MS_HttpContext怎么办??
只有这个答案是正确的。
好多凭空想象的回答
对
HttpRequest rq= HttpContext.Current.Request;
全是凭空想像 估计好多人还不知道什么叫webapi ,这是微软独立搞的一套http机制 全是坑