Delphi HTTPRIO:签署证书的soap请求后出错

时间:2016-03-17 17:37:09

标签: delphi ssl soap x509certificate

我很难弄清楚什么是错误的。

我收到了这条消息:

Route::get('laravel.devl/tournament/1', 'TournamentController@showTournament');
Route::put('laravel.dev/tournament/1/edit', 'TournamentController@editTournament');

导入我的Wsdl这是我的btn点击事件。

    Debugger Exception Notification
    Project Project9.exe raised exception class ERemotableException with message 'System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: node
at System.Xml.XmlNodeReader..ctor(XmlNode node)
at Serpro.Sped.eFinanceira.WsInternet.WsRecepcao.ReceberLoteEvento(XmlDocument loteEventos)
--- End of inner exception stack trace ---'.
Break Continue Help

请有人帮帮我吗? 非常感谢!

请求:

procedure TForm7.Button1Click(Sender: TObject);
 var
 vWsRecepcaoSoap : WsRecepcaoSoap;
 vXmlData : loteEventos;
 vHTTPRIO : THTTPRIO;
 begin
 vHTTPRIO := THTTPRIO.Create( Nil );
 vHTTPRIO.WSDLLocation := 'http://www1.receita.fazenda.gov.br/sistemas/e-financeira/documentos/doc-download/WsRecepcao.wsdl';
 vHTTPRIO.Service := 'WsRecepcao';
 vHTTPRIO.Port := 'WsRecepcaoSoap12';
 vHTTPRIO.HTTPWebNode.OnBeforePost := HTTPRIO1HTTPWebNode1BeforePost;
 //vHTTPRIO.OnBeforeExecute := HTTPRIO1BeforeExecute;
 vWsRecepcaoSoap := vHTTPRIO as WsRecepcaoSoap;
 vXmlData := TXMLData.Create;
 vXmlData.LoadFromXML(
 //'<?xml version="1.0" encoding="UTF-8"?> '+
 '<eFinanceira xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '+
 'xmlns="http://www.eFinanceira.gov.br/schemas/envioLoteEventos/v1_0_1">'+
 ' <loteEventos>'+
 '  <evento id="ID0">'+
 '  <eFinanceira xmlns="http://www.eFinanceira.gov.br/schemas/evtAberturaeFinanceira/v1_0_0">'+
 '  <evtCadDeclarante id="ID00000001762">'+
 '  <ideEvento>'+
 '  <indRetificacao>1</indRetificacao>'+
 ' <tpAmb>2</tpAmb>'+
 '  <aplicEmi>2</aplicEmi>'+
 '  <verAplic>00000000000000000707</verAplic>'+
 '  </ideEvento>'+
 '  <ideDeclarante>'+
 '  <cnpjDeclarante>02475222000196</cnpjDeclarante>'+
 '  </ideDeclarante>'+
 '  <infoCadastro>'+
 '  <nome>CECM SERV ESTAT ADM DIRETA EST E SANTO</nome>'+
 '  <enderecoLivre>AV JOAO BATISTA PARRA N 673 EDF ENSEADA TOWER LJ 1 PRAIA DO SUA</enderecoLivre>'+
 '  <municipio>3205309</municipio>'+
 '  <UF>ES</UF>'+
 '  <Pais>BR</Pais>'+
 '  <paisResidencia>BR</paisResidencia>'+
 '  </infoCadastro>'+
 '  </evtCadDeclarante>'+
 '  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">'+
 '  <SignedInfo>'+
 '  <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'+
 '  <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>'+
 '  <Reference URI="#ID00000001762">'+
 '  <Transforms>'+
 '  <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>'+
 '  <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'+
 '  </Transforms>'+
 ' <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>'+
 '  <DigestValue>G8kSjLVludtkatDuCm2rLszM7D4=</DigestValue>'+
 '  </Reference>'+
 '  </SignedInfo>'+
 '  <SignatureValue>f7OmvLKjuuRQiX+6tgqBYxB5zBFgxjXMyXOqZkWtLhgW2lP/ZzM7xrnt9HZFBSetIhJNGuPhKysZzf4hZClW1YSEfi2WECb3CNzBCfjzeOA2fEJ/FJXdYdDsAvtzjTbt'+
 'E+MqrJW/u9sGNJHJDTtVfdjPwt3Y9NUJJ0SADvDtXPiow71rcpAeg3fQD3IIFlPLyz0WbGiUyzDcsl3pb7L7AYilj5Pm5utV0COq8A0jwnMylKolGHScXgJaPW3U9qHw9KDeaGP0NfgEYyYTk/C8T'+
 'NSZXb5AKj2sFr9rfLRuTOqEJHjKvlYmWsGUCTwEVkkNakTYbuNFYsXB++nVVaoD7Q==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIHQjCCBSqgAwIBAgIEAMtJKTANB'+
 'gkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEtMCsGA1'+
 'UEAxMkQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFNFUlBST1JGQnY0MB4XDTE1MDgxNDE2NTg0MVoXDTE4MDgxMzE2NTg0MVowgbYxCzAJBgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTY'+
 'wNAYDVQQLEy1TZWNyZXRhcmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxEzARBgNVBAsTCkFSQ09SUkVJT1MxFTATBgNVBAsTDFJGQiBlLUNQRiBBMzEuMCwGA1UEAxMlQ0FS'+
 'TE9TIFJPR0VSSU8gRE9TIFNBTlRPUzowMjQ1MjIwNzcxMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKpkYV/6tAjFMopRahCMbKuaoygH+NjBmIR7p5JYm2rdw0c1Vft4i2cZjSNs/'+
 'cVJsadZgxiw3YFYqIyyg+dMA78qTWpidVr4n2BOCwh7xmqjZ/t+Cf2ay3/HjeYdjsNRMRtkGjoLGQqPXVdKM//TSQHB2Sc+oWIcWmscvYJoN19SsgCaWk073mltthdo+zOeuFSGYsUKj7YXOLbTfm'+
 'BJpslQRVM8GQdgv1ufSGKFccVRESkb5RsWjM2MvvzZNtDKPFpICW1Q3Elo3EeP6D9iYNPBMPh4dRcya8e2DnNSDjA24o9xStoN+SCZwwU6Dfq1lAoBMZxrvGCjnKLicLUuckMCAwEAAaOCAoEwggJ'+
 '9MB8GA1UdIwQYMBaAFDAKLAy4Nyvg9toC/oCCZ5aYVBk7MFsGA1UdIARUMFIwUAYGYEwBAgMEMEYwRAYIKwYBBQUHAgEWOGh0dHA6Ly9yZXBvc2l0b3Jpby5zZXJwcm8uZ292LmJyL2RvY3MvZHBj'+
 'YWNzZXJwcm9yZmIucGRmMIHRBgNVHR8EgckwgcYwPKA6oDiGNmh0dHA6Ly9yZXBvc2l0b3Jpby5zZXJwcm8uZ292LmJyL2xjci9hY3NlcnByb3JmYnY0LmNybDA+oDygOoY4aHR0cDovL2NlcnRpZ'+
 'mljYWRvczIuc2VycHJvLmdvdi5ici9sY3IvYWNzZXJwcm9yZmJ2NC5jcmwwRqBEoEKGQGh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9zZXJwcm8vYWNzZXJwcm9yZmJ2NC'+
 '5jcmwwVgYIKwYBBQUHAQEESjBIMEYGCCsGAQUFBzAChjpodHRwOi8vcmVwb3NpdG9yaW8uc2VycHJvLmdvdi5ici9jYWRlaWFzL2Fjc2VycHJvcmZidjQucDdiMIGhBgNVHREEgZkwgZagQAYFYEw'+
 'BAwGgNwQ1MDMxMDE5NzMwMjQ1MjIwNzcxMzExNjUxMTMwNzgxMDAwMDAwNDU3OTc2MDg5REVUUkFORVOgFwYFYEwBAwagDgQMMDExNjUxMTMwNzgxoCcGBWBMAQMFoB4EHDAxNDgxMzEzMTQwNjAw'+
 'MTAxMTFWSVRPUklBRVOBEHJzQHByb2RhZi5jb20uYnIwDgYDVR0PAQH/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAQoQ1UiFiVuklBLM8U'+
 'lVteQnQNUdAZFoE2BGIsPHJd5nG5lW+RpWadU12EcM10AtFd/eJgfLIR2xU/FEmFhKNok+MA+g+h4RUBHbg8RVvoVSvw3dLGbO9HkaZ3nziwOTKHzq32G0MsQ47g4aoeOt9p9SNZhcUoSXESPgCco'+
 'uJSLW2H2SYp7bBBB1hDivWqqhwgDXY+kGkleKgjWrE4KdhXQXzD0hj9OubG/huOBUyRaD3kAGF2yTxqUS4vl/oRicpO3NyPa0f3ScGkKtLsAJUAfnfv9p5JUEpVR5sFf7RoGXvv6zDoZnG7QKxuUR'+
 'L+x5/ZV2k5dmNSkcmyCwKKnguytRA/S/UZ1NJ3+G3M4g+nNMuofMlFLYPtGGLWQWEY9i32wARLjo6fwcD26NxRxVRYkUOmMe8GSc7gmfqNSC/+FMqMV12EJdvgui6gytLVaXfC1oAjXwkb0e3pQT7'+
 'u0+jZsnfAexAvOCNEfe6Jx9ANOF7KrvOr5Tp33l2lPcGD3PQRMsySUCHb95mu9lZ/lqzEKJjwXJ4z2KCCPQ6Su8FKTgUoYTl2BnTJBBPDw06nLBwqB2EiFWnPr+NF5HEuLDcGTysgoFcll4fPJu3y'+
 '2OMeq6OGR3xOhK2FEJx9efYZ6KKtGVrR4l6IieDK9joskSRYzU+ZERjvHD8dWm1U9+QXjQ=</X509Certificate></X509Data></KeyInfo></Signature>'+
 '  </eFinanceira>'+
 '  </evento>'+
 '  </loteEventos></eFinanceira>');

 vXmlData := vWsRecepcaoSoap.ReceberLoteEvento(vXmlData);
 Memo2.text := vXmlData.XMLNode.XML;

 end;

procedure TForm7.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
Data: Pointer);
var
  Store        : IStore;
  Certs        : ICertificates;
  Cert         : ICertificate2;
  CertContext  : ICertContext;
  PCertContext : PCCERT_CONTEXT;
  V            : OleVariant;
  vCertsLista       : ICertificates2;
begin
  (*
    thumbprint of the certificate to use. Look at CAPICOM docs to see
    how to find certs using other Id's
  *)
 (*
    thumbprint of the certificate to use. Look at CAPICOM docs to see
    how to find certs using other Id's
  *)
  V := 'BC50E0E8CA750D6F7524EC58B3071E9FCB4C8920';

  (* create Certificate store object *)
  Store := CoStore.Create;

  (* open the My Store containing certs with private keys *)
  Store.Open( CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );

  (* find the certificate with the given thumbprint *)
  vCertsLista       := Store.Certificates as ICertificates2;

  Certs :=  vCertsLista.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, V, False);

//  Certs := Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, V, False );


  (* any certificates found? *)
  if Certs.Count > 0 then
  begin
    (* get the certificate context *)
    Cert := IInterface( Certs.Item[ 1 ] ) as ICertificate2;
    CertContext := Cert as ICertContext;
    CertContext.Get_CertContext( Integer( PCertContext ) );

    (* set the certificate to use for the SSL connection *)
    if InternetSetOption( Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
        PCertContext, Sizeof( CERT_CONTEXT ) ) = False then
    begin
       raise Exception.Create('Erro ao configurar certificado para conexão SSL.');
    end;
  end;

end;

1 个答案:

答案 0 :(得分:1)

<。> .net服务器响应错误:&#34;服务器无法处理请求&#34; 所以你必须联系该服务的所有者