【发布时间】:2018-09-20 08:29:58
【问题描述】:
我正在尝试从 springboot 客户端访问安全 SOAP 服务,但出现此错误
StartTransaction 已开始... 等传真 |开始交易... 等传真 |服务初始化 等传真 | 2018-09-20 07:50:38.512 信息 1 --- [nio-7070-exec-1] o.a.c.w.s.f.ReflectionServiceFactoryBean:从 WSDL 创建服务 {http://eid.equifax.com/soap/schema/canada/v3/wsdl}canadav3:https://eid.equifax.ca/uru/soap/ut/canadav3?wsdl 等传真 |服务端口发起人 等传真 | 2018-09-20 07:50:39.558 信息 1 --- [nio-7070-exec-1] o.a.c.w.s.f.ReflectionServiceFactoryBean:从 WSDL 创建服务 {http://eid.equifax.com/soap/schema/canada/v3/wsdl}canadav3:https://eid.equifax.ca/uru/soap/ut/canadav3?wsdl 等传真 | 2018-09-20 07:50:39.614 信息 1 --- [nio-7070-exec-1] o.a.c.w.s.f.ReflectionServiceFactoryBean:从 WSDL 创建服务 {http://eid.equifax.com/soap/schema/canada/v3/wsdl}canadav3:https://eid.equifax.ca/uru/soap/ut/canadav3?wsdl 等传真 | org.apache.cxf.binding.soap.SoapFault:处理标头时发现错误 等传真 |处理标头时发现错误
我的代码:
@ResponseBody
public ResponseEntity<Object> startTransaction(@RequestBody Identity identity) {
System.out.println("StartTransaction Started...");
InitialRequest initialRequest = new InitialRequest();
ProcessingOptions value = new ProcessingOptions();
value.setLanguage("French");
initialRequest.setIdentity(identity);
initialRequest.setProcessingOptions(value);
InitialResponse iR = new InitialResponse();
try {
System.out.println("Start transaction ...");
Canadav3 canada = new Canadav3();
System.out.println("Service initialise");
CanadaPortTypeV3 c = canada.getCanadaHttpPortV3();
System.out.println("ServicePort initiee");
URL wsdlURL = new URL("https://eid.equifax.ca/uru/soap/ut/canadav3?wsdl");
QName qname = new QName("http://eid.equifax.com/soap/schema/canada/v3/wsdl", "Canadav3");
Service service =Service.create(wsdlURL, qname);
c = (CanadaPortTypeV3)service.getPort(CanadaPortTypeV3.class);
BindingProvider bp = (BindingProvider)c;
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "/user");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");
iR = c.startTransaction(initialRequest);
System.out.println("Finish");
return ResponseEntity.status(HttpStatus.OK).body(iR);
}catch (CredentialsErrorFault c) {
System.err.println("Finish");
System.err.println("CredentialsErrorFault "+c.getLocalizedMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new Alert(c.getMessage()));
}
catch(ValidationErrorFault e) {
System.err.println("Finish");
System.err.println("ValidationErrorFault "+e.getLocalizedMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new Alert(e.getMessage()));
}
catch(Exception e) {
System.out.println(e.getCause());
System.err.println(e.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new Alert("Error unknows"));
}
}
提前谢谢你
【问题讨论】:
-
这些日志不够用,考虑添加更多trace。
-
这就是我所有的日志。也许,它的格式不太好:
标签: java spring-boot authentication soap wsdl