【问题标题】:Passing spaces and special chars to RestFul webservice [duplicate]将空格和特殊字符传递给 RestFul webservice [重复]
【发布时间】:2017-06-14 15:02:17
【问题描述】:

我想在我的 android 项目中调用 RestFul webservice。一切正常,直到我想将特殊字符作为字符串发送到 web 服务。

起初我认为问题只是空格,我将它们替换为“%20”。但我看到这些字符 "\r\n,+,/,\,?,..." 也有问题。我使用URLEncoder.encode 只是那个字符串(不是整个URL),但它并没有解决我的问题,例如它用'+'替换了导致错误的空格。或其他例外情况,例如当我的字符串中有NewLine 字符时,它给了我Bad Request - Invalid URL。对于每个字符,我都有一些错误,例如 endpoint not foundServer Error in '/' Application

    URL url = new URL(reqUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");

现在我手动替换了每个字符。我想让它知道为什么URLEncoder.encode 的方法不对,还有其他方法可以解决吗?

解决方案:

我发现了我的问题,from this document

模板字符串语法

模板包含三个部分:路径、可选查询和可选 片段。

我将字符串参数作为路径部分而不是可选查询发送。当我发送URLEncoder.encode(myStringParameter) 作为可选查询时,即使有空格,我也没有任何问题。

【问题讨论】:

  • 只是一个随机建议,使用 Retrofit 库

标签: java android rest


【解决方案1】:

你可以使用post方法。

  1. 使用 GET 进行安全操作,使用 POST 进行不安全操作。

  2. 在处理敏感数据时使用 POST。

  3. 在处理长请求时使用 POST。

  4. 在 AJAX 环境中使用 GET。

额外信息:link

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2019-06-24
    • 2021-02-12
    • 2013-09-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多