java - Android - 如何处理/打开到包含非 ASCII 字符的 URL 的 http 连接?

标签 java android

我正在尝试以下列形式打开到某些给定 URL 的 http 连接:

http://example.com/xml.aspx?RssType=1&TypeName=中文

我想打开一个到它的 Http 连接,获取它的输入流,并对输入流进行一些解析(请参阅下面的代码 fragment )。但我得到的只是 MalformedURLException。

有人知道这个 URL 有什么问题吗?是导致问题的参数“?Rss...&...”还是末尾的非 ASCII 字符有问题?

代码 fragment :

String feed = getString(R.string.feed_url);

URL url = null;
HttpURLConnection httpConn = null;
try {
    url = new URL(feed);
    httpConn = (HttpURLConnection) url.openConnection();  
    if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {  // exception here!

最佳答案

您需要对参数进行 URL 编码,尤其是中文位。

使用 java.net.URLEncoder.encode("中文", "UTF-8") — 为了安全起见,对于查询的每个参数值,不仅是 类型名称

关于java - Android - 如何处理/打开到包含非 ASCII 字符的 URL 的 http 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5779583/

相关文章:

java - Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer

java - Scanner.nextInt() 正在移动到下一行,这怎么可能?

android - 使用不同的 LICENSE KEY android 进行不同风格的 gradle 签名

android - 如何动态交换 fragment ?

java - 尝试在 null 对象上调用虚拟方法 'void androidx.appcompat.widget.Toolbar.setNavigationIcon(android.graphics.drawable.Drawable)'

java - Maven Surefire 2.13 无法在 Windows 上 fork

java - Spring boot JPA 如何在@Transient 属性上查询过滤器

android - 如何在可绘制对象中添加填充

java - 检查一个 8 亿条目的 hashmap 是否包含一个元素

android - 无法在 Android 的 Surface Holder 中获取屏幕宽度和高度?