【发布时间】:2017-06-14 15:02:17
【问题描述】:
我想在我的 android 项目中调用 RestFul webservice。一切正常,直到我想将特殊字符作为字符串发送到 web 服务。
起初我认为问题只是空格,我将它们替换为“%20”。但我看到这些字符 "\r\n,+,/,\,?,..." 也有问题。我使用URLEncoder.encode 只是那个字符串(不是整个URL),但它并没有解决我的问题,例如它用'+'替换了导致错误的空格。或其他例外情况,例如当我的字符串中有NewLine 字符时,它给了我Bad Request - Invalid URL。对于每个字符,我都有一些错误,例如 endpoint not found 或 Server 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 库