为了账号安全,请及时绑定邮箱和手机立即绑定

Java访问一个url获得的返回结果和浏览器获得的返回结果不同

Java访问一个url获得的返回结果和浏览器获得的返回结果不同

米琪卡哇伊 2018-12-07 10:51:14
最近在写一个课程作业的时候,要用到猫眼电影的API获取数据,碰到一个头疼的问题。 url为:http://m.maoyan.com/showtime/wrap.json?cinemaid=1111&movieid=248680 我直接在浏览器中访问这个url能得到对应的Json数据; 但是在Java代码中用这个url却得不到任何数据;   访问url的方法如下: 1 public static String getURLContent(String urlStr) { 2 URL url = null; 3 //http连接 4 HttpURLConnection httpConn = null; 5 //输入流 6 BufferedReader in = null; 7 StringBuffer sb = new StringBuffer(); 8 try{ 9 url = new URL(urlStr); 10 httpConn = (HttpURLConnection)url.openConnection(); 11 InputStreamReader inputStreamReader = new InputStreamReader(httpConn.getInputStream(),"UTF-8"); 12 in = new BufferedReader(inputStreamReader); 13 String str = null; 14 while((str = in.readLine()) != null) { 15 sb.append( str ); 16 } 17 } catch (Exception ex) { 18 19 } finally{ 20 try{ 21 if(in!=null) { 22 in.close(); 23 } 24 }catch(IOException ex) { 25 26 } 27 } 28 String result =sb.toString(); 29 //System.out.println(result); 30 return result; 31 }     我观察这个url后发现直接访问http://m.maoyan.com/showtime/wrap.json这个path的时候,猫眼的服务器是不会返回Json数据的,所以觉得问题可能是出在这里,但是不知道有什么解决办法去控制这个url。   恳求路过大神帮帮忙~~
查看完整描述

12 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

 

比较 headers 部分的差异

查看完整回答
反对 回复 2018-12-16
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

我在代码里面openConnection之后查看这个连接的headers,第一行是

HTTP/1.1 403 Forbidden,

请问这样是不是说明猫眼实际上没有开方这些数据的访问权限呀?

查看完整回答
反对 回复 2018-12-16
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

谢谢帮助

查看完整回答
反对 回复 2018-12-16
?
LEATH

TA贡献1936条经验 获得超6个赞

有可能是跨域问题

查看完整回答
反对 回复 2018-12-16
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

谢谢回复

查看完整回答
反对 回复 2018-12-16
?
慕容708150

TA贡献1831条经验 获得超4个赞

可能需要猫眼开放权限给你。

查看完整回答
反对 回复 2018-12-16
?
冉冉说

TA贡献1877条经验 获得超1个赞

我现在也开始怀疑可能是权限的问题,请问你这样推断的理由是什么啊?

查看完整回答
反对 回复 2018-12-16
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

谢谢回复

查看完整回答
反对 回复 2018-12-16
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

 

这是服务器单方面默认杜绝后台数据采集座的防护,加上这个就可以了

查看完整回答
反对 回复 2018-12-16
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

查看完整回答
反对 回复 2018-12-16
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

估计猫眼是为了防止盗链和爬虫吧

查看完整回答
反对 回复 2018-12-16
  • 12 回答
  • 0 关注
  • 1221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信