ASP.NET的.ashx页面怎么获取安卓App传过来的post请求

duan_zhao 2017-12-28 09:15:04
string name =context.Request["username"];//登录名

string pwd = context.Request["userpassword"];//密码

string logintype = context.Request["logintype"]; ;//用户类型

//这个可以获取get请求传过来的参数,但是获取不到post的
...全文
347 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duan_zhao 2017-12-28
  • 打赏
  • 举报
回复
这么写还是获取不到json HttpRequest request = context.Request; Stream stream = request.InputStream; string json = string.Empty; string responseJson = string.Empty; if (stream.Length != 0) { StreamReader streamReader = new StreamReader(stream); json = streamReader.ReadToEnd(); context.Response.Write(json); } context.Response.Write("没有获取到json");
  • 打赏
  • 举报
回复
或者你让安卓用application/x-www-form-urlencoded方式提交,这样Request.Form可以获取
  • 打赏
  • 举报
回复
对面是json方式传递,你就要读取整个body,然后json反序列化
duan_zhao 2017-12-28
  • 打赏
  • 举报
回复
安卓的代码是这个,然而我看不懂 public static void PostOkhttpRequest(String address , Callback callback){ try{ JSONObject jsonObject = new JSONObject(); jsonObject.put("logintype",0); jsonObject.put("userpassword","1"); jsonObject.put("username","441402200011030728"); OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create(JSON,jsonObject.toString()); Log.i("PostOkhttpRequest","jsonObject=="+jsonObject.toString()); Request request = new Request.Builder().url(address).post(body).build(); client.newCall(request).enqueue(callback); }catch (Exception e){ } }
  • 打赏
  • 举报
回复
你不知道安卓以什么方式post的?post的content-type是怎么样的
  • 打赏
  • 举报
回复
引用 2 楼 duan_zhao 的回复:
我是给安卓app写的接口,所有是看不到context的
你不会写个html post过来测试? 你不会百度一下 https://www.baidu.com/s?tn=80035161_2_dg&wd=post%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7 ?
duan_zhao 2017-12-28
  • 打赏
  • 举报
回复
我是给安卓app写的接口,所有是看不到context的
  • 打赏
  • 举报
回复
在第一句打断点,在context点击快速查看,自己看看context里面都有些什么。
duan_zhao 2017-12-28
  • 打赏
  • 举报
回复
问题已经解决了,顺带把方式写下来 ASP.NET的Request用于获取表单(application/x-www-form-urlencoded)提交 ,ASP.NET默认的是表单提交 1.安卓post提交json 安卓请求 (格式是application/json) JSONObject jsonObject = new JSONObject(); jsonObject.put("logintype",0); jsonObject.put("userpassword","1"); jsonObject.put("username","441402200011030728"); OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create(JSON,jsonObject.toString()); Request request = new Request.Builder().url(address).post(body) .addHeader("Connection","close") .build(); client.newCall(request).enqueue(callback); ASP.NET获取 1. HttpRequest request = context.Request; Stream stream = request.InputStream; string jsonpost = string.Empty; string responseJson = string.Empty; StreamReader streamReader = new StreamReader(stream); jsonpost = streamReader.ReadToEnd();//获取传过来的json string jsonname = JsonConvert.DeserializeObject(jsonpost).ToString(); //然后就是反序列化取值 2. Stream stream = context.Request.InputStream; byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); string parameters = Encoding.Default.GetString(bytes); //然后就是反序列化取值 安卓post提交表单(格式是application/x-www-form-urlencoded) ASP.NET获取就直接试Request就行了 最后说一句,网上有在线测试接口的工具,个人感觉并不好用,因为只能测试发布到外网的,并不能测试本地的, 然后就找到了PostMan工具,很强大的工具,可以直接进入到vs里面调试,然后就一步步跟代码,也是因为这样才知道接口错在了那里

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧