Java编程实现NBA赛事接口调用实例代码

第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口

第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数调用。

第三步:调用别人提供的接口方法

代码如下:

package juheapi.nba;
/**
 * Created by Administrator on 2017/11/19/019.
 */
import net.sf.json.JSONObject;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
 *NBA赛事调用示例代码 - 聚合数据
 *在线接口文档:https://www.juhe.cn/docs/92
 **/
public class NBADemo {
	public static final String DEF_CHATSET = "UTF-8";
	public static final int DEF_CONN_TIMEOUT = 30000;
	public static final int DEF_READ_TIMEOUT = 30000;
	public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
	//配置您申请的KEY
	public static final String APPKEY ="b5ca2acdab01c88c99d532cdfb5c3aa2";
	//1.NBA常规赛赛程赛果
	public static void getRequest1(){
		String result =null;
		String url ="https://op.juhe.cn/onebox/basketball/nba";
		//请求接口地址
		Map params = new HashMap();
		//请求参数
		params.put("key",APPKEY);
		//应用APPKEY(应用详细页查询)
		params.put("dtype","");
		//返回数据的格式,xml或json,默认json
		try {
			result =net(url, params, "GET");
			JSONObject object = JSONObject.fromObject(result);
			if(object.getint("error_code")==0){
				System.out.println(object.get("result"));
			} else{
				System.out.println(object.get("error_code")+":"+object.get("reason"));
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	//2.球队赛程赛事查询
	public static void getRequest2(){
		String result =null;
		String url ="https://op.juhe.cn/onebox/basketball/team";
		//请求接口地址
		Map params = new HashMap();
		//请求参数
		params.put("key",APPKEY);
		//应用APPKEY(应用详细页查询)
		params.put("dtype","");
		//返回数据的格式,xml或json,默认json
		params.put("team","");
		//球队名称
		try {
			result =net(url, params, "GET");
			JSONObject object = JSONObject.fromObject(result);
			if(object.getint("error_code")==0){
				System.out.println(object.get("result"));
			} else{
				System.out.println(object.get("error_code")+":"+object.get("reason"));
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	//3.球队对战赛赛程查询
	public static void getRequest3(){
		String result =null;
		String url ="https://op.juhe.cn/onebox/basketball/combat";
		//请求接口地址
		Map params = new HashMap();
		//请求参数
		params.put("key",APPKEY);
		//应用APPKEY(应用详细页查询)
		params.put("dtype","");
		//返回数据的格式,xml或json,默认json
		params.put("hteam","勇士");
		//主队球队名称
		params.put("vteam","76人");
		//客队球队名称
		try {
			result =net(url, params, "GET");
			JSONObject object = JSONObject.fromObject(result);
			if(object.getint("error_code")==0){
				System.out.println(object.get("result"));
			} else{
				System.out.println(object.get("error_code")+":"+object.get("reason"));
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
   *
   * @param strUrl 请求地址
   * @param params 请求参数
   * @param method 请求方法
   * @return 网络请求字符串
   * @throws Exception
   */
	public static String net(String strUrl, Map params,String method) throws Exception {
		HttpURLConnection conn = null;
		BufferedReader reader = null;
		String rs = null;
		try {
			StringBuffer sb = new StringBuffer();
			if(method==null || method.equals("GET")){
				strUrl = strUrl+"?"+urlencode(params);
			}
			URL url = new URL(strUrl);
			conn = (HttpURLConnection) url.openConnection();
			if(method==null || method.equals("GET")){
				conn.setRequestMethod("GET");
			} else{
				conn.setRequestMethod("POST");
				conn.setDoOutput(true);
			}
			conn.setRequestProperty("User-agent", userAgent);
			conn.setUseCaches(false);
			conn.setConnectTimeout(DEF_CONN_TIMEOUT);
			conn.setReadTimeout(DEF_READ_TIMEOUT);
			conn.setInstanceFollowRedirects(false);
			conn.connect();
			if (params!= null && method.equals("POST")) {
				try {
					DataOutputStream out = new DataOutputStream(conn.getOutputStream());
					out.writeBytes(urlencode(params));
				}
				catch (Exception e) {
					// TODO: handle exception
				}
			}
			InputStream is = conn.getInputStream();
			reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
			String strRead = null;
			while ((strRead = reader.readLine()) != null) {
				sb.append(strRead);
			}
			rs = sb.toString();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		finally {
			if (reader != null) {
				reader.close();
			}
			if (conn != null) {
				conn.disconnect();
			}
		}
		return rs;
	}
	//将map型转为请求参数型
	public static String urlencode(Map<string,object>data) {
		StringBuilder sb = new StringBuilder();
		for (Map.Entry i : data.entrySet()) {
			try {
				sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
			}
			catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
}
package juheapi.nba;

/**
 * Created by Administrator on 2017/11/19/019.
 */
public class NBADemoTest extends NBADemo{

  public static void main(String[] args) {
    getRequest3();
  }
}

在使用上述代码时可能会出现异常,一般都是由于jar包不全导致的。

问题一: 抛出 NestableRuntimeException

解决办法:查看jar包是否完整

包括:commons-beanutils-1.7.0.jar

commons-collections-3.1.jar

commons-lang-2.4.jar (使用过高版本也会报NestableRuntimeException)

commons-logging-1.1.1.jar

ezmorph-1.0.6.jar

json-lib-2.1.jar

log4j.jar

问题二:User-specified log class'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is notuseable.

解决办法:添加log4j的jar包。

总结

以上就是本文关于Java编程实现NBA赛事接口调用实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

java实现一个简单的网络爬虫代码示例

分享一个简单的java爬虫框架

如有不足之处,欢迎留言指出。

(0)

相关推荐

  • Java编程接口调用的作用及代码分享

    很多JAVA初级程序员对于接口存在的意义很疑惑.不知道接口到底是有什么作用,为什么要定义接口. 好像定义接口是提前做了个多余的工作.下面我给大家总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力. 2.简单.规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些

  • 浅谈Java 三种方式实现接口校验

    本文介绍了Java 三种方式实现接口校验,主要包括AOP,MVC拦截器,分享给大家,具体如下: 方法一:AOP 代码如下定义一个权限注解 package com.thinkgem.jeesite.common.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import j

  • java 线性表接口的实例详解

    java 线性表接口的实例详解 前言: 线性表是其组成元素间具有线性关系的一种线性结构,对线性表的基本操作主要有插入.删除.查找.替换等,这些操作可以在线性表的任何位置进行.线性表可以采用顺序存储结构和链式存储结构表示. 本接口的类属于dataStructure包的linearList子包.线性表接口LList声明如下,描述线性表的取值.置值.插入.删除等基本操作. package dataStructure.linearList; public interface LList<E> { bo

  • 详解Java 本地接口 JNI 使用方法

    详解Java 本地接口 JNI 使用方法 对于Java程序员来说,Java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的.但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点.比如在性能.和底层打交道方面都有它的缺点.所以java就提供了一些本地接口,他主要的作用就是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也就是我们平常常说的java本地接口(JNI--java native Interface).它使得在 Java 虚拟机 (VM

  • Spring MVC的优点与核心接口_动力节点Java学院整理

    为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部分的精力放在业务上. 2.性能优秀,这是一个最能吸引眼球的话题. 3.尽量使用大众的框架(避免使用小众的.私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响. 如果你还在为这件事件发愁,本文最适合你了.选择Spring MVC吧. Spring MVC是当前最优秀的MVC

  • Java编程通过list接口实现数据的增删改查代码示例

    List接口常用的实现ArrayList. 常用方法:add(Object obj)  增加一个元素                      add(int index,Object obj) 在指定索引位置添加元素                      remove(int index) 删除指定位置的元素                      remove(Objiect)  从列表中删除元素                      set(index,Object) 修改指定位

  • Java编程实现NBA赛事接口调用实例代码

    第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口 第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数调用. 第三步:调用别人提供的接口方法 代码如下: package juheapi.nba; /** * Created by Administrator on 2017/11/19/019. */ import net.sf.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; i

  • Java编程实现轨迹压缩算法开放窗口实例代码

    轨迹压缩算法 场景描述 给定一个GPS数据记录文件,每条记录包含经度和维度两个坐标字段,根据距离阈值压缩记录,将过滤后的所有记录的经纬度坐标构成一条轨迹 算法描述 这种算法的用处还是相当广泛的. 轨迹压缩算法分为两大类,分别是无损压缩和有损压缩,无损压缩算法主要包括哈夫曼编码,有损压缩算法又分为批处理方式和在线数据压缩方式,其中批处理方式又包括DP(Douglas-Peucker)算法.TD-TR(Top-Down Time-Ratio)算法和Bellman算法,在线数据压缩方式又包括滑动窗口.

  • Vue调用后端java接口的实例代码

    前段时间 做了个学校的春萌项目,其中用到vue连接后端java接口. 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax

  • Java并发编程Callable与Future的应用实例代码

    本文主要探究的是java并发编程callable与future的使用,分享了相关实例代码,具体介绍如下. 我们都知道实现多线程有2种方式,一种是继承Thread,一种是实现Runnable,但这2种方式都有一个缺陷,在任务完成后无法获取返回结果.要想获得返回结果,就得使用Callable,Callable任务可以有返回值,但是没法直接从Callable任务里获取返回值:想要获取Callabel任务的返回值,需要用到Future.所以Callable任务和Future模式,通常结合起来使用. 试想

  • Java编程使用UDP建立群聊系统代码实例

    相关java类介绍 DatagramSocket public class DatagramSocket extends Object 此类表示用来发送和接收数据报包的套接字. 数据报套接字是包投递服务的发送或接收点.每个在数据报套接字上发送或接收的包都是单独编址和路由的.从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达. 在DatagramSocket上总是启用UDP广播发送.为了接收广播包,应该将DatagramSocket绑定到通配符地址,在某些实现中,将Dat

  • Java编程实现从尾到头打印链表代码实例

    问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } } 思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈.最后在遍历栈出栈. public static Stack<Integer> printListReverse_Stack(ListNode li

  • PHP用户管理中常用接口调用实例及解析(含源码)

    掌握用户的第一步就是将已经关注的粉丝信息保存起来,这个时候就用到获取用户列表接口.公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求. 一. 获取微信关注用户列表接口调用实例 接口说明 http请求方式:GET 接口调用地址: https://api.weixin.qq.com/cgi-bin/user/get?access

  • JAVA利用HttpClient进行HTTPS接口调用的方法

    本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下: 1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManage

  • Java编程实现多线程TCP服务器完整实例

    相关Java类 Socket public class Socket extends Object ·功能:TCP客户端套接字 ·构造方法: Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号 ·常用方法: 1.getInetAddress 获得InetAddress的相关信息 2.getInputStream 获得此TCP连接的输入流 3.getOutPutStream 获得此TCP连接的输出流 ServerSo

  • Java编程实现对象克隆(复制)代码详解

    克隆,想必大家都有耳闻,世界上第一只克隆羊多莉就是利用细胞核移植技术将哺乳动物的成年体细胞培育出新个体,甚为神奇.其实在Java中也存在克隆的概念,即实现对象的复制. 本文将尝试介绍一些关于Java中的克隆和一些深入的问题,希望可以帮助大家更好地了解克隆. 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适

随机推荐