【问题标题】:getText.toString() changes symbols to UnicodegetText.toString() 将符号更改为 Unicode
【发布时间】:2018-10-15 16:46:19
【问题描述】:

我的应用中有一个 edittext 字段,最终用户可以在其中输入他们的电子邮件进行登录。

当我使用 getText.toString() 获取字段的值时,@ 符号会自动转换为 %40 并将传递的值中断给 POST 请求。

我想我错过了一些简单的东西来停止自动转换。 我发现问题出在;

@Field(encoded = false, value = "username") String username

【问题讨论】:

  • 好的,应该将值“username”更改为“email”,因为服务器需要将参数作为“email”传递..在此之后开始正常工作。

标签: java android retrofit tostring symbols


【解决方案1】:

发布请求参数根据内容类型标头进行编码。您应该将内容类型设置为“text/html”以防止编码。

或者,您也可以使用以下代码来解码该值。

String result = java.net.URLDecoder.decode(receivedStringValue, "UTF-8");

【讨论】:

  • 我相信问题出在 Retro Fit 上。我正在使用 @Field(encoded = false, value = "username") String username 但它仍在被编码。
【解决方案2】:

由于服务器实际上要求该字段为“电子邮件”,因此当我按照以下更改 Retro Fit 时工作正常;

//changed value = "username" to value = "email"
@Field(encoded = false, value = "email") String username

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多