springboot项目如何接入淘宝客API?

ppylox
·3/23/2024·0 阅读
AI 摘要模型根据正文自动生成,仅供参考

SpringBoot项目接入淘宝客API时,因接口升级和旧SDK导致无权限报错,需从官网重新生成最新SDK包。Maven项目在pom.xml引入本地jar,并在spring-boot-maven-plugin中配置includeSystemScope为true,确保打包时包含第三方包。随后使用DefaultTaobaoClient初始化AppKey和AppSecret,调用TbkDgMaterialOptionalUpgradeRequest设置分页和关键词参数,执行请求后将响应体转为JSON,解析出map_data即为返回数据。

之前项目接入过淘宝客API,API的调用也正常,但是最近发现发送API请求报错,提示无权限。

从官方文档发现最近的API已经进行过升级,原有的接口已经无法使用,再看了下最近的sdk包还是两年前下载的。

顺着这个思路往这个方向进行修复,在官网重新生成了最新的SDK包。

maven项目需要在pom.xml文件中引入下载好的jar包,但是注意需要打包的时候也要把本地下载的jar包打进去。

<build>\n		<plugins>\n			<plugin>\n				<groupId>org.springframework.boot</groupId>\n				<artifactId>spring-boot-maven-plugin</artifactId>\n				<configuration>\n\n					<!--加入这个includeSystemScope,解决引入第三方包后本地运行正常,打包后报错问题-->\n					<includeSystemScope>true</includeSystemScope>\n				</configuration>\n				<!--加入这个includeSystemScope,解决引入第三方包后本地运行正常,打包后报错问题-->\n\n			</plugin>\n		</plugins>\n	</build>

jar包引入正常后,后面就是正常调用api了。

String serverUrl = "http://gw.api.taobao.com/router/rest";\n    // 可替换为您的应用的AppKey\n    String appKey = "xxx";\n    // 可替换为您的应用的AppSecret\n    String appSecret = "xxx";\n\n    String pageNo = "1";\n    String pageSize = "10";\n    String keyWords = "数据线";\n    // 初始化请求参数\n    TaobaoClient client = new DefaultTaobaoClient(serverUrl, appKey, appSecret);\n    TbkDgMaterialOptionalUpgradeRequest req = new TbkDgMaterialOptionalUpgradeRequest();\n    req.setPageSize(Long.valueOf(pageSize)); // 页大小,默认20,1~100\n    req.setPageNo(Long.valueOf(pageNo));     // 第几页,默认:1\n    req.setQ(keyWords); // 商品筛选-查询词\n    // 开始请求\n    TbkDgMaterialOptionalUpgradeResponse rsp = client.execute(req);\n    Map<String, Object> resultMap = new HashMap<>();\n    ObjectMapper objectMapper = new ObjectMapper();\n    // 转成Json\n    Map map = objectMapper.readValue(rsp.getBody(), Map.class);\n    Map tbk_dg_material_optional_response = (Map) map.get("tbk_dg_material_optional_upgrade_response");\n    Map result_list = ((Map) tbk_dg_material_optional_response.get("result_list"));\n    List map_data = ((List) result_list.get("map_data"));\n    resultMap.put("result",map_data);\n    log.info(map_data.toString());\n    

最终map_data就是返回的json数据。




相关文章

评论 (0)

暂无评论,来写第一条吧