本人使用Tomcat apache-tomcat-8.0.28虚拟服务器,默认utf-8编码
update.json
{"versionName":"2.0","versionCode":2,"description":"Hello word!!","downloadUrl":"http://www.baidu.com"}
android studio 1.3.1 做了个客户端:部分编码如下:
private void checkVersion(){
new Thread(){
@Override
public void run() {
try {
URL url = new URL("http://10.0.2.2:8080/update.json");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.connect();
int responseCode = conn.getResponseCode();
if(responseCode==200){
InputStream inputStream = conn.getInputStream();
String result = StreamUtils.readFromSteam(inputStream);
Log.e("System.Out.Print", "result:"+result);
//解析Json
JSONObject jo = new JSONObject(result);
mVersionName = jo.getString("versionName");
mVersionCode = jo.getInt("versionCode");
mDescription = jo.getString("description");
mDownloadUrl = jo.getString("downloadUrl");
Log.e("System.Out.Print", "run "+mVersionName+";"+mVersionCode);
Log.e("System.Out.Print", "run "+mDescription+";"+mDownloadUrl);
}
} catch (MalformedURLException e) {
// utl错误的异常
e.printStackTrace();
} catch (IOException e) {
//网络错误的异常
e.printStackTrace();
}
catch (JSONException e) {
e.printStackTrace();
}
}
}.start();
}
public class StreamUtils {
/**
* readFromSteam() 将输入流读成String后返回
* @return
*/
public static String readFromSteam(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while((len=in.read())!=-1){
out.write(buffer,0,len);
}
String result = out.toString();
in.close();
out.close();
return result;
}
}
每次运行后的结果如下:
看一下下面这个图片吧!
http://img.ask.csdn.net/upload/201602/21/1456069188_115538.jpg
在用HttpURLConnection的时候,没有设置默认编码,可能是utf-8和 "ISO-8859-1"混淆了。
然后模拟器和手机不一样的原因是;Android版本不一样导致HttpURLConnection的具体实现不一样,记得Android4.4之后,HttpURLConnection底层采用HttpOK了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。