我正在尝试连接到一个网络服务,我的查询中保存了一些数据。不好的是,这些数据包含utf-8字符,这会出现问题。
如果我只是使用普通字符串调用 HttpGet,则会出现“非法字符”异常。所以我用谷歌搜索并尝试了一些 utf-8 魔法。
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter("http.protocol.content-charset", "UTF-8");
String utfurl = URLEncoder.encode(url, "utf-8");
HttpGet httpGet = new HttpGet(utfurl);
HttpResponse response = httpclient.execute(httpGet);
content = response.getEntity().getContent();
} catch (Exception e) {
Log.d(TAG, "getInputStream: " +e.getMessage());
现在我不会得到非法字符,但它似乎完全弄乱了 utfurl,因为我得到了“目标主机不能为空,或在参数中设置”。可能是因为他无法识别混乱字符串中的“http://”部分。
有什么建议吗?
Regards
我认为您需要一个 URL 编码的查询字符串。如果是这样,请使用:
String query = "?param=value";
String host = "http://my.host.name.com/";
String encodedUrl = host + UrlEncoder.encode(query,"utf-8");
基本思想是您只想对查询字符串进行编码,而不是主机名或协议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)