Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-08-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
acceder a Webservice con certificado de cliente

Buenas a tod@s...
relacionado con el TicketBai, y para evitar errores, he visto que la AEAT tiene una servicio web de validación de NIF.
https://www2.agenciatributaria.gob.e...ws/VNifV2.wsdl

He importado el wsdl perfectamente y lo uso así:

Código Delphi [-]
procedure TForm.Button1Click(Sender: TObject);
var
  nifValidatorWS: VNifV2;
  VNifV2Entrada: VNifV2Ent;
  VNifV2Salida: VNifV2Sal;
  contri: Contribuyente;
begin
  nifValidatorWS := GetVNifV2(false, '', nil);
  if nifValidatorWS <> nil then
  begin
    contri := Contribuyente.Create;
    contri.Nif := 'NIFDEPRUEBA';
    setLength(VNifV2Entrada, 1);
    VNifV2Entrada[0] := contri;
    VNifV2Salida := nifValidatorWS.VNifV2(VNifV2Entrada);
  end;
end;

Funciona sin problema (o casi), hasta que al hacer la llamada y esperar la respuesta del servicio : VNifV2Salida := nifValidatorWS.VNifV2(VNifV2Entrada); me pide el certificado de cliente para la autentificación (Vamos se abre el selector de certificados del explorador)

Sé que puedo acceder poner un certificado de cliente con la propiedad ClientCertificate en el THTTPReqResp del HTTPRIO del servicio, pero el Tipo TClientCert solo tiene las propiedades certName y serialNumber...
Además no quiero que se seleccione del almacén del S.O., ya que me obliga a instalarlo y yo quiero seleccionarlo de un fichero.

¿Alguien ha lidiado ya con esto?

Gracias.
Responder Con Cita
  #2  
Antiguo 26-08-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Wink

bueno.. después de media mañana buscando y releyendo....
he encontrado esto en el propio foro... http://www.clubdelphi.com/foros/show...postcount=1198
Ahí lo hace... pero usando capicom...no me gusta mucho, pero por ahora es lo que hay...ç

Saludos..
Responder Con Cita
  #3  
Antiguo 26-08-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Angry

Como la respuesta era de 2017 y ha llovido un poquito desde entonces, CAPICOM debe haber cambiado de versión y hay cosas que no funcionan.......

Concretamente:

- ya no existe el tipo PCCERT_CONTEXT,
- la excepcion EOleSysError no existe
- ni la función InternetSetOption(

Última edición por iMia fecha: 26-08-2021 a las 16:07:26.
Responder Con Cita
  #4  
Antiguo 26-08-2021
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Yo lo he hecho con Delphi 2010 con llamadas a la biblioteca WinCrypt.
Cargas el archivo PFX con el certificado (o lo puedes tener almacenado en la base de datos o en un recurso) a un almacén de certificados temporal, extraes el certificado y lo añades al WebService.

Código Delphi [-]
procedure HTTPRIOHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);

  procedure CheckError(Puntero: Pointer);
  begin
    if not Assigned(Puntero) then
      RaiseLastOSError;
  end;

const
  INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
  Pass = 'LaContraseña';
var
  pStore: HCERTSTORE;
  pCert: PCERT_CONTEXT;
  DataBlob: CRYPT_DATA_BLOB;
  PFX: AnsiString;
begin
  pStore := nil;
  pCert := nil;

  PFX := FuncionQueLeaElFicheroPFX;

  try
    DataBlob.cbData := Length(PFX);
    DataBlob.pbData := @PFX[1];

    // Almacen temporal con el contenido del PFX
    pStore := PFXImportCertStore(DataBlob, PWideChar(Pass), {PKCS12_NO_PERSIST_KEY + }PKCS12_INCLUDE_EXTENDED_PROPERTIES);
    CheckError(pStore);

    // Buscar un certificado con clave privada
    // Solo debería haber uno
    pCert := CertFindCertificateInStore(pStore,
                                        X509_ASN_ENCODING,
                                        0,
                                        CERT_FIND_HAS_PRIVATE_KEY, //CERT_FIND_ANY,
                                        nil,
                                        nil);
    CheckError(pCert);

    // Pasarlo al servicio
    InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, pCert, SizeOf(CERT_CONTEXT));
  finally
    if Assigned(pCert) then
      CertFreeCertificateContext(pCert);

    if Assigned(pStore) then
      CertCloseStore(pStore, 0);
  end;
end;

Para las declaraciones de la biblioteca uso JwaWinCrypt y añado la declaración de PFXImportCertStore.
En Delphi 2010 sólo parte de las declaraciones están en CertHelper por eso prefiero las del JEDI, puede que en versiones más modernas esté más completa.

Código Delphi [-]
function PFXImportCertStore(var pPFX: CRYPT_DATA_BLOB;
                            szPassword: LPCWSTR;
                            dwFlags: DWORD): HCERTSTORE; stdcall; external 'Crypt32.dll';
Responder Con Cita
  #5  
Antiguo 26-08-2021
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Cita:
Empezado por iMia Ver Mensaje
Como la respuesta era de 2017 y ha llovido un poquito desde entonces, CAPICOM debe haber cambiado de versión y hay cosas que no funcionan.......

Concretamente, ya no existe el tipo PCCERT_CONTEXT, ni la función InternetSetOption(
InernetSetOpcion está en WinInet
Responder Con Cita
  #6  
Antiguo 26-08-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Thumbs up

Cita:
Empezado por Garada Ver Mensaje
InernetSetOpcion está en WinInet
Me faltaba el uses de System.Win.ComObj para el EOleSysError

y el uses del WinInet para el InternetSetOption como tu bien has apuntado!


Gracias!

Última edición por iMia fecha: 26-08-2021 a las 16:30:12.
Responder Con Cita
  #7  
Antiguo 27-08-2021
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Funcionando....
el último problema lo tenia en la estructura CERT_CONTEXT, pero solo la necesitaba para darle una dimensión máxima, por lo que la he fijado a 1024, más que de sobras para el certificado.
Con eso el WS contesta perfectamente...

gracias a tod@s...

P.D.: Después de unos 4 o 5 años sin hacer nada de WS en Delphi (ni de delphi en 2 años...) me he tenido que poner al dia rapidito...
Responder Con Cita
  #8  
Antiguo 28-08-2021
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
CERT_CONTEXT tiene un tamaño fijo, usa SizeOf(CERT_CONTEXT) me imagino que es para la llamada a InternetSetOption. Fíjate en los ejemplos.

Por cierto, el que dejé no usa Capicom sino WinCrypt y te ahorras estar instalandola.
Responder Con Cita
  #9  
Antiguo 13-09-2022
CASV97 CASV97 is offline
Registrado
 
Registrado: sep 2022
Posts: 1
Poder: 0
CASV97 Va por buen camino
Acceder al servicio web desde java 8

Buenas, estoy desarrollando una especie de API REST con Spring boot donde yo solo recibo el id del ticket, genero el XML y hago conexión con hacienda, Esto lo hago para no hacerlo dentro del mismo programa del tpv de la empresa, estoy usando java 8_191, he creado un restTemplate donde añado el fichero del certificado,

Código:
/**
  * 
 */
package com.tbai.api.rest.controller;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;

import javax.net.ssl.SSLContext;

import org.apache.http.Header;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.tbai.api.rest.service.IFacturaGeneradorXMLService;
import com.tbai.api.rest.util.Constantes;

/**
 * @author Christan
 *
 */

@RestController
@RequestMapping("/api/tbai")
public class RestControllerTbai {
    @Value("${trust.store}")
    private String trustStore;

    @Value("${trust.store.password}")
    private String trustStorePassword;
//
    @Autowired
    private IFacturaGeneradorXMLService facturaService;
//    @Autowired
//    private RestTemplate restTemplate;
    private final static Logger log = LogManager.getLogger();

    /**
     * Devuelve el xml en fotmaro String
     * 
     * @param idLargoTicket
     * @return
     * @throws Exception
     */
    @PostMapping("/generarXML/{idLargoTicket}")
    @ResponseBody
    public String getFacturaXML(@PathVariable String idLargoTicket) throws Exception {
        log.debug("Entra peticion para generar XML de ticket: " + idLargoTicket);
        String xmlFactura = facturaService.generarXMLFactura(idLargoTicket);
        RestTemplate restTemplate = restTemplate();
        HttpEntity<String> httpEntity = new HttpEntity<>(xmlFactura);
        String response = restTemplate.postForObject(Constantes.URL_API_ENTORNO_PRUEBAS_ALAVA_ALTA_FACTURA, httpEntity,
                String.class);

        return response;
    }

    public RestTemplate restTemplate() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException,
            CertificateException, MalformedURLException, IOException, UnrecoverableKeyException {
        InputStream cpStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(trustStore);
        // load the keystore
        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
        keystore.load(cpStream, trustStorePassword.toCharArray());
        
        SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(keystore).build();
        
        SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
        // Configure header
        List<Header> headers = new ArrayList<>();
        Header header = new BasicHeader("Content-Type", "application/xml;charset=UTF-8");
        headers.add(header);

        CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory)
                .setDefaultHeaders(headers).build();

        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);

        RestTemplate restTemplate = new RestTemplate(requestFactory);

        return restTemplate;
    }

 }
para realizar la conexión segura con la hacienda de Alava,y despues de tanta pelea conseguí he añadido el certificado al keystore de java, pero ahora tengo un error diferente, que no consigo solucionar, la traza es la siguiente:



Cita:
2022-09-13 10:32:25.851 ERROR 16988 --- [p-nio-90-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on POST request for "hps://pruebas-ticketbai.araba.eus/TicketBAI/v1/facturas/": java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty; nested exception is javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty] with root cause

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(Unknown Source) ~[na:1.8.0_321]
at java.security.cert.PKIXParameters.<init>(Unknown Source) ~[na:1.8.0_321]
at java.security.cert.PKIXBuilderParameters.<init>(Unknown Source) ~[na:1.8.0_321]
at sun.security.validator.PKIXValidator.<init>(Unknown Source) ~[na:1.8.0_321]
at sun.security.validator.Validator.getInstance(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.X509TrustManagerImpl.getValidator(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLHandshake.consume(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.TransportContext.dispatch(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLTransport.decode(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLSocketImpl.decode(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[na:1.8.0_321]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[na:1.8.0_321]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.j ava:396) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:35 5) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOpe rator.java:142) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionMana ger.java:373) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.5.jar!/:4.5.5]
at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClient HttpRequest.java:89) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBuffering ClientHttpRequest.java:48) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:660) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:388) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at com.tbai.api.rest.controller.RestControllerTbai.getFacturaXML(RestControllerTbai.java:81) ~[classes!/:0.0.1-SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_321]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_321]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_321]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_321]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:2 05) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMetho d.java:133) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:97) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMeth od(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(Re questMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethod Adapter.java:85) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.ja va:108) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:8 1) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java :197) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.14.RELEASE.jar!/:4.3.14.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) ~[tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_321]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_321]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.27.jar!/:8.5.27]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_321]
El error es al momento de procesar la peticion en el método del RESTTemplate postForObject(*)
Si alguien ha tenido este error o ha hecho algo similar agradecería infinitamente cualquier ayuda al respecto, me interesa seguir haciendolo en Java ya que es la tecnología que más manejo además que la arquitectura que he planteado fue para que sea una especie de microservicio separado del programa principal.

psdt: he cambiado el enlace del servicio porque no me dejaba `publicar la respuesta
De antemano, muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conectar Webservice con httpRio+Certificado gasal Internet 2 20-07-2018 17:11:08
Problema: Delphi no encuentra ningún certificado electrónico para acceder a un WS davidrgh Varios 4 18-05-2017 16:53:07
Acceder remotamente a webservice giulichajari Delphi para la web 2 28-05-2014 00:32:32
SOAP POST - Webservice con Certificado y SSL JXJ Varios 5 09-05-2011 20:11:08


La franja horaria es GMT +2. Ahora son las 16:56:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi