C#MVC Android URL编码参数

时间:2015-11-03 12:36:24

标签: c# android asp.net-mvc

我有一个简单的网站,我需要一个电子邮件和密码才能登录。这一切都适用于PC浏览器和Apple手机/平板电脑。

然而,droid设备将无法登录。我通过我的电脑路由我的测试手机并使用fiddler来查看http流量,Android正在编码电子邮件地址,所以我没有看到foo% 40here.com,因此我的服务器端验证失败,因为这不是有效的电子邮件地址。

我想到检测这个问题的简单方法是在验证之前查看电子邮件字符串,然后查找%40符号。但是如果默认情况下android会对urlencode进行调整,这可能会让我在问题上更进一步,并且不得不检查字符串,并猜测%是否是某些网址编码的一部分,或者真正的百分比是否会成为问题。< / p>

那么我可以将一个属性或过滤器应用于我的方法,以便框架根据需要对其进行取消编码,或者我是否需要根据具体情况对其进行处理?

2 个答案:

答案 0 :(得分:1)

尝试在发送请求之前在您的请求中添加("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");行 像这样request.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

参见示例

 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());

答案 1 :(得分:0)

控制器上的我的方法没有用[HttpPost]属性修饰。这似乎已经为我修好了