android 我用httpurlconnection get方法 从服务器获取了一个json 可是打印出来是一段乱码 代码如下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 我用httpurlconnection get方法 从服务器获取了一个json 可是打印出来是一段乱码 代码如下相关的知识,希望对你有一定的参考价值。
要怎么改才能不出现乱码
1、让服务器设置一下编码格式,tomcat有个设置编码格式的
2、接收后 转码 例如new String(old.getBytes("gbk"),"utf-8");具体看你接收到的是什么格式
3、设置studio的编码格式 最好所有统一 u8格式
参考技术A Map<String, List<String>> map = conn.getHeaderFields();for (String key : map.keySet())
System.out.println(key + "--->" + map.get(key));
遍历下服务器的响应头信息,找到编码,看下编码格式。
然后创建InputStreamReader这样创建:
InputStreamReader inputStreamReader =new InputStreamReader(connection.getInputStream(),"编码格式")
试试看能不能解决本回答被提问者采纳
在 Android 中处理 Http 304 响应
【中文标题】在 Android 中处理 Http 304 响应【英文标题】:Handling Http 304 Response In Android 【发布时间】:2015-05-19 22:57:24 【问题描述】:我使用HttpURLConnection 与服务器通信并使用HttpResponseCache 进行缓存,当服务器以304 (HTTP_NOT_MODIFIED) 响应时,我得到了空的正文,但根据 HttpURLConnection 和 HttpResponseCache 的文档,以防 304 HttpUrlConnection将在缓存中获取相同 URL 的响应。虽然对 url 的请求被缓存并且我确认了它。当第一次调用 url 时我得到正确的响应(数据),而当我调用 url 时缓存后,为什么我得到空的正文(没有数据)。
【问题讨论】:
你是在实例化这个HttpResponseCache
吗?还是使用默认值?
我在应用程序开始时创建缓存参考是这个链接developer.android.com/reference/android/net/http/…
我可以看看你正在做的第二个请求吗?
@kashif181 我们也遇到了同样的问题。你是怎么解决这个问题的?你能帮帮我吗?
【参考方案1】:
我通过从官方谷歌代码库下载 volley 库解决了这个问题,这是链接 https://android.googlesource.com/platform/frameworks/volley/+/master.
实际上 github 上的 volley 源代码是定制的,会导致很多问题(github 链接:https://github.com/mcxiaoke/android-volley),千万不要从该链接下载。
【讨论】:
以上是关于android 我用httpurlconnection get方法 从服务器获取了一个json 可是打印出来是一段乱码 代码如下的主要内容,如果未能解决你的问题,请参考以下文章
为什么我用AsyncTask获取android.os.NetworkOnMainThreadException?