最近在写一个课程作业的时候,要用到猫眼电影的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 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
我在代码里面openConnection之后查看这个连接的headers,第一行是
HTTP/1.1 403 Forbidden,
请问这样是不是说明猫眼实际上没有开方这些数据的访问权限呀?
汪汪一只猫
TA贡献1898条经验 获得超8个赞
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
这是服务器单方面默认杜绝后台数据采集座的防护,加上这个就可以了
慕妹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)");
添加回答
举报
0/150
提交
取消