将空格和特殊字符传递给RestFul webservice

时间:2017-01-29 09:07:16

标签: java android rest

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

起初我认为问题只是空格,我用“%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)作为可选查询时,即使有空格也没有任何问题。

1 个答案:

答案 0 :(得分:0)

您可以使用post方法。

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

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

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

  4. 在AJAX环境中使用GET。

  5. 额外信息:link