C#MVC Android URL编码参数
本文关键字:参数 编码 URL Android C#MVC | 更新日期: 2023-09-27 18:20:26
我有一个简单的网站,我正在玩,它接受电子邮件和密码登录。这一切在PC浏览器和苹果手机/平板电脑上都很好。
然而,droid设备不会登录。我通过电脑路由我的测试手机,并使用fiddler查看http流量,而Android正在对电子邮件地址进行编码,因此foo@here.com我看到foo%40here.com,因此我的服务器端验证失败,因为这不是一个有效的电子邮件地址。
对我来说,检测这一点的简单方法是在验证电子邮件字符串之前简单地查看它,并查找%40符号。但是,如果android默认情况下对所有内容进行url编码,这可能会给我带来进一步的问题,并且必须检查字符串,并猜测%是某种url编码的一部分,还是真正的百分比将成为一个问题。
那么,是否有一个属性或过滤器可以应用于我的方法,以便框架根据需要对其进行解密,或者我需要根据具体情况进行处理?
在发送请求之前,尝试在请求中添加("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
行像这个request.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
se示例
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(Constants.mWebURL+Constants.mSendBloodReq);
request.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
// adding paramaters
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("user_id",params[0]));
postParameters.add(new BasicNameValuePair("password",params[1]));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters,"UTF-8");
request.setEntity(formEntity);
HttpResponse httpresponse = httpClient.execute(request);
//getting response
response = EntityUtils.toString(httpresponse.getEntity());
控制器上的My Method没有使用[HttpPost]属性进行修饰。这似乎已经为我修复了