0
点赞
收藏
分享

微信扫一扫

Java http get


一般在java处理Get/Post请求,用的比较多是apache的commons-httpclient.jar库,封装比较彻底,使用比较简单。有些简单应用场合,不需要使用httpclient库,可以直接使用Java内置URLConnection类。

 

客户端:

public String getInfoFromServ( String path ){
BufferedReader in = null;
String result = "";

try {
URL url = new URL(path);
URLConnection urlcon = url.openConnection();

// 设置读取编码 UTF-8
in = new BufferedReader(new InputStreamReader(urlcon.getInputStream(),"UTF-8"));
String line;

// 循环读取多行内容,注源服务器内容一定要以\n结尾
while ((line = in.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if( in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

// 解析出resultData字段
JSONObject json = null;
try {
json = new JSONObject(result);
result = json.getString("resultData");
} catch (Exception e) {
e.printStackTrace();
}

return result;
}

 

    通过URLConnection的getInputStream()获取输入流,然后通过BufferedReader逐行读取。上述代码在测试环境中正常,能取到服务器完整的JSON字段值,但是部署到现场后,发现只能取到部分JSON字段,这Java不是跨平台的么,服务器不同执行结果还不同了?最后发现是由于服务器端返回内容格式问题,BufferedReader是逐行读取,每行以\n结尾。可能由于java版本不同,代码做了相应优化所致。

 

服务端:

rep.setContentType("text/json;charset=utf-8");
PrintWriter out = rep.getWriter();
out.println(strJson); // 调用println()输出换行符,不用print()
out.flush();

 

附:​​org.json​​

 

 

 

 

举报

相关推荐

0 条评论