=====
【
京东api接入的几个坑(宙斯)
写这篇文章为了发下牢骚,鄙视下京东api上的不足, 怀念下下午的2个小时。。。。。
http://jos.jd.com/ 在宙斯平台上的api调用,下载官方的sdk(java) open-api-sdk.2.0.jar
- String SERVER_URL = "http://gw.api.360buy.com/routerjson";
- String accessToken = "xxxxxxxxxxxxxxxxxxxx";
- String appKey = "F9060Cxxxxx37CFxxxxxxxxxxxxx";
- String appSecret = "748b2fbxxxxxca48xxxxxxxxxxxxx";
- JdClient client = new DefaultJdClient(SERVER_URL,accessToken,appKey,appSecret);
- CategorySearchRequest request=new CategorySearchRequest();
- request.setFields( "id,fid,status,lev,name,index_id" );
- CategorySearchResponse response=client.execute(request);
报错:
- java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
- at com.jd.open.api.sdk.internal.util.JsonUtil.<clinit>(JsonUtil.java:15)
- at com.jd.open.api.sdk.request.list.WareCatelogyAttributeListGetRequest.getAppJsonParams(WareCatelogyAttributeListGetRequest.java:61)
- at com.jd.open.api.sdk.DefaultJdClient.buildUrl(DefaultJdClient.java:107)
- at com.jd.open.api.sdk.DefaultJdClient.execute(DefaultJdClient.java:73)
- at com.yubao.jdsearch.jdapi.TestMain.testGetItemInfo(TestMain.java:31)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:606)
- at junit.framework.TestCase.runTest(TestCase.java:154)
- at junit.framework.TestCase.runBare(TestCase.java:127)
- at junit.framework.TestResult$1.protect(TestResult.java:106)
- at junit.framework.TestResult.runProtected(TestResult.java:124)
- at junit.framework.TestResult.run(TestResult.java:109)
- at junit.framework.TestCase.run(TestCase.java:118)
- at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
- at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
- Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapper
- at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
- at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
- at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
- ... 21 more
导入了一个jackson-all.2.0.jar 包又报错,
- java.lang.NoSuchMethodError: org.codehaus.jackson.map.DeserializationConfig.set(Lorg/codehaus/jackson/map/DeserializationConfig$Feature;Z)V
- at com.jd.open.api.sdk.internal.parser.JsonParser.<init>(JsonParser.java:24)
- at com.jd.open.api.sdk.internal.parser.ParserFactory.<clinit>(ParserFactory.java:12)
- at com.jd.open.api.sdk.DefaultJdClient.parse(DefaultJdClient.java:128)
- at com.jd.open.api.sdk.DefaultJdClient.execute(DefaultJdClient.java:90)
- at com.yubao.jdsearch.jdapi.TestMain.testGetItemInfo(TestMain.java:31)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:606)
- at junit.framework.TestCase.runTest(TestCase.java:154)
- at junit.framework.TestCase.runBare(TestCase.java:127)
- at junit.framework.TestResult$1.protect(TestResult.java:106)
- at junit.framework.TestResult.runProtected(TestResult.java:124)
- at junit.framework.TestResult.run(TestResult.java:109)
- at junit.framework.TestCase.run(TestCase.java:118)
- at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
- at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
后来通过maven库上找了依赖包,居然官方都没有说明有第三方包需要导入,fk,, 纯粹是自己尝试着摸索的,哎。。。。。
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-core-asl</artifactId>
- <version>1.8.11</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-mapper-asl</artifactId>
- <version>1.8.11</version>
- </dependency>
终于成功了。。。 yes,想说句,京东api开放的也太 niubility了。。。。
】
=====
https://pan.baidu.com/s/1zlbBqCeuLOX4tBrt0qeACg
jackson-mapper-asl-1.9.8.jar下载
https://pan.baidu.com/s/1nzbDmxTcao3gewGBOmq1tg