问题描述
我尝试使用REST API(沙盒名称便宜),但出现错误。我在下面分享了我的项目详细信息。
邮递员请求
https://api.sandBox.namecheap.com/xml.response/?apiuser=faizshirajiapi&ApiKey=914443384d8645039fd038c9074c6f3&UserName=faizshirajiapi&ClientIp=103.135.254.237&Command=namecheap.domains.check&DomainList=faizdoller.com
和我的回复xml
<?xml version="1.0" encoding="utf-8"?>
<ApiResponse Status="OK" xmlns="http://api.namecheap.com/xml.response">
<Errors />
<Warnings />
<RequestedCommand>namecheap.domains.check</RequestedCommand>
<CommandResponse Type="namecheap.domains.check">
<DomainCheckResult Domain="faizdoller.com" Available="true" ErrorNo="0" Description="" IsPremiumName="false" PremiumRegistrationPrice="0" PremiumrenewalPrice="0" PremiumRestorePrice="0" PremiumTransferPrice="0" IcannFee="0" EapFee="0.0" />
</CommandResponse>
<Server>PHX01SBAPIEXT02</Server>
<GMTTimeDifference>--5:00</GMTTimeDifference>
<ExecutionTime>0.402</ExecutionTime>
</ApiResponse>
我的项目文件详细信息如下:
package com.namecheap.apiclient.model;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@XmlRootElement
@JsonIgnoreProperties(ignoreUnkNown = true)
public class ApiResponse {
String status;
String requestedCommand;
private CommandResponse commandResponse;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRequestedCommand() {
return requestedCommand;
}
public void setRequestedCommand(String requestedCommand) {
this.requestedCommand = requestedCommand;
}
public CommandResponse getCommandResponse() {
return commandResponse;
}
public void setCommandResponse(CommandResponse commandResponse) {
this.commandResponse = commandResponse;
}
}
package com.namecheap.apiclient.client;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import com.namecheap.apiclient.model.ApiResponse;
@Component
public class CallRestService implements CommandLineRunner {
private static void callRestService() {
RestTemplate restTemplate = new RestTemplate();
ApiResponse apiResponse = restTemplate.getForObject("https://api.sandBox.namecheap.com/xml.response/?apiuser=faizshirajiapi&ApiKey=914443384d8645039fd038c9074c6f3c&UserName=faizshirajiapi&ClientIp=103.135.254.237&Command=namecheap.domains.check&DomainList=faizdoller.com",ApiResponse.class);
System.out.println("API Response Status :" + apiResponse.getRequestedCommand());
}
@Override
public void run(String... args) throws Exception {
callRestService();
}
}
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:779) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
at com.namecheap.apiclient.SandBoxNameCheapTry2Application.main(SandBoxNameCheapTry2Application.java:12) ~[classes/:na]
Caused by: org.springframework.http.converter.HttpMessageConversionException: Could not create JAXBContext for class [class com.namecheap.apiclient.model.ApiResponse]: null; nested exception is javax.xml.bind.JAXBException
- with linked exception:
[java.lang.classNotFoundException: com.sun.xml.bind.v2.ContextFactory]
at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.lambda$getJaxbContext$0(AbstractJaxb2HttpMessageConverter.java:114) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705) ~[na:na]
at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.getJaxbContext(AbstractJaxb2HttpMessageConverter.java:108) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.createUnmarshaller(AbstractJaxb2HttpMessageConverter.java:80) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter.readFromSource(Jaxb2RootElementHttpMessageConverter.java:128) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.readInternal(AbstractXmlHttpMessageConverter.java:69) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:199) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:114) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:739) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:672) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:313) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at com.namecheap.apiclient.client.CallRestService.callRestService(CallRestService.java:13) ~[classes/:na]
at com.namecheap.apiclient.client.CallRestService.run(CallRestService.java:19) ~[classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795) ~[spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
... 5 common frames omitted
Caused by: javax.xml.bind.JAXBException: null
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:196) ~[jaxb-api-2.1.jar:na]
at javax.xml.bind.ContextFinder.find(ContextFinder.java:385) ~[jaxb-api-2.1.jar:na]
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574) ~[jaxb-api-2.1.jar:na]
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522) ~[jaxb-api-2.1.jar:na]
at org.springframework.http.converter.xml.AbstractJaxb2HttpMessageConverter.lambda$getJaxbContext$0(AbstractJaxb2HttpMessageConverter.java:110) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
... 18 common frames omitted
Caused by: java.lang.classNotFoundException: com.sun.xml.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:522) ~[na:na]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:192) ~[jaxb-api-2.1.jar:na]
... 22 common frames omitted
2020-11-02 02:03:27.538 INFO 34257 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
我想读取DomainCheckResult元素标签值。我如何读取该值?请我出来。 任何人都请帮助我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)