Jump to content
Fivewin Brasil

Error MSXML2.ServerXMLHTTP/14 DISP_E_BADPARAMCOUNT: SEND


Van

Recommended Posts

 

 

Van, esse XML de envio, é do que mesmo? Tem certeza que é nesse portal?

Oi, Kapiaba... 

Sim, a URL está correta.

É o envio de operações de fomento para assinatura digital.... Eu já fiz todo o processo de homologação com essa empresa. e tudo funcionou direitinho.

Quando fui implantar no cliente obtive o erro (da primeira postagem)... Vim testar novamente no meu computador e deu o erro aqui também... 

Por isso estou tão sem rumo, era algo que estava funcionando e agora não está mais e eu não tenho idéia do porquê.

A rotina é bastante simples, mas, resolveu engasgar no SEND().

Será que tem alguma forma de obter algum detalhamento do erro que está acontecendo? 

PS - Por desencargo de consciência, tentei enviar um XML para a URL em produção e o erro persistiu. 

 

 

Link to comment
Share on other sites

Veja se ajuda:

# define HTTPREQUEST_PROXYSETTING_PROXY  2
	Funcion...
	   try
	      oHttp := CreateObject( "winhttp.winhttprequest.5.1" )
      oHttp:SetTimeouts(40000,40000,40000,40000) // VERIFICAR SE FICA LENTO
      oHttp:Open( "GET", "http://24timezones.com/pt_horamundial/brasilia_hora_local.php" , .F. )
      oHttp:Send()
      cHtml := oHttp:ResponseText()
	   catch
	      Try
         oHttp := CreateObject('MSXML2.XMLHTTP')
      Catch
        oHttp := CreateObject('Microsoft.XMLHTTP')
      End
	   end
	return nil


 

Link to comment
Share on other sites

Kapiaba, não deu certo... 

Sistem, o status voltou como 1 antes do Send() e em seguida já saiu pelo catch (mensagem de erro no SEND)

Estou anexando o XML de testes nesta postagem caso alguém queira dar uma olhada 

Minha rotina está assim neste momento: 

//=================================================================

static function testa_envio()

LOCAL strXml := ""
local strret

cResposta = ""
sUser := "teste"
sPassword := "Eu92KAQ10p79VPu7t87X"

cWebService := "https://hom.crdc.com.br:8443/api/formalizacao/v1?wsdl/"

aaa = curdrive() + ":\" + ALLTRIM(CURDIR()) + "\"
warquivo = aaa + "arquivoxmlcrdc.xml"

oTxt := TTxtFile():New( warquivo )
nLinhas := oTxt:nTLines
oTxt:Gotop()
cLinha := oTxt:cLine

for x=1 to nlinhas
    cLinha += alltrim(oTxt:cLine)
    oTxt:Skip(1)
next
oTxt:Close()

sconteudo = cLinha                                // <<<<<====== conteúdo do XML que será passado


//==============================================================
// rotina sugerida no fórum

//1) Criar o servidor

      Try
         oServer := CreateObject("Msxml2.ServerXMLHTTP")
      Catch
         MsgInfo( 'Erro na Criação do Serviço' )
         RETURN NIL
      End

//2) Abrir o servidor
        oServer:Open( "POST", cWebService, .F. )

//3) Adicionar o request header
          oServer:SetRequestHeader("Content-Type","application/json")
          oServer:SetRequestHeader( "Username" , "&sUser")
          oServer:SetRequestHeader( "Password" , "&sPassword")

          msginfo(oServer:readyState)                          //<<<<<<======  voltou com status = 1          

        try

          oServer:Send( sConteudo )                            // <<<<<======= envia o XML

          While oServer:readyState != 4                        // <<<<<======= nem entrou aqui.. já saiu pelo catch
                oServer:WaitForResponse(500)
          end

          cResposta  := oServer:responseText                   // <<<<<======= resposta do webservice
          msginfo(cresposta)

        catch

          MsgInfo( 'Erro no Send' )
        end

Return .t.

 

arquivoxmlCRDC.xml

Link to comment
Share on other sites

 

Deveria retornar isso?

 

Wla1Kci.png

Exatamente... 

Então o problema não está na rotina e sim no ambiente... 

O que pode estar interferindo para que eu não consiga mandar o arquivo ???  em todas as máquinas que testei obtive o erro... 

Van´s case... rs...  

 

 

Link to comment
Share on other sites

Veja se acha o erro... noisemaupraxuxu... kkkkkkkkkkkkkkk

#include "fivewin.ch"
	FUNCTION testa_envio()
	   LOCAL CRESPOSTA, SUSER, SPASSWORD, CWEBSERVICE, WARQUIVO, OTXT, NLINHAS
   LOCAL CLINHA, X, AAA, SCONTEUDO, OSERVER
   LOCAL strXml := ""
   LOCAL strret
	   cResposta := ""
   sUser     := "teste"
   sPassword := "Eu92KAQ10p79VPu7t87X"
	   cWebService := "https://hom.crdc.com.br:8443/api/formalizacao/v1?wsdl/"
	   // aaa = curdrive() + ":\" + ALLTRIM(CURDIR()) + "\"  // erro
   aaa := CurDrive() + ":\" + CurDir( CurDrive() )  + "\"
	   // ? aaa
	   warquivo := aaa + "arquivoxmlcrdc.xml"
	   IF FILE( warquivo )
     // NADA A FAZER
   ELSE
	      ? "CADE O ARQUIVO VAN?", aaa, wArquivo
	      RETURN NIL
	   ENDIF
	   oTxt := TTxtFile():New( warquivo )
   nLinhas := oTxt:nTLines
	   oTxt:Gotop()
   cLinha := oTxt:cLine
	   FOR x = 1 TO nlinhas
	      cLinha += alltrim( oTxt:cLine )
	      oTxt:Skip( 1 )
	   NEXT
	   oTxt:Close()
	   sconteudo = cLinha  // <<<<<====== conteúdo do XML que será passado
	   //==============================================================
   // rotina sugerida no fórum
	   //1) Criar o servidor
	   Try
      oServer := CreateObject( "Msxml2.ServerXMLHTTP" )
   Catch
      MsgInfo( 'Erro na Criação do Serviço' )
      RETURN NIL
   End
	   //2) Abrir o servidor
   oServer:Open( "POST", cWebService, .F. )
	   //3) Adicionar o request header
   oServer:SetRequestHeader( "Content-Type", "application/json" )
   oServer:SetRequestHeader( "Username" , "&sUser" )
   oServer:SetRequestHeader( "Password" , "&sPassword" )
	   msginfo( oServer:readyState )                          //<<<<<<======  voltou com status = 1
	   try
	      oServer:Send( sConteudo )                            // <<<<<======= envia o XML
	      WHILE oServer:readyState != 4                        // <<<<<======= nem entrou aqui.. já saiu pelo catch
	         oServer:WaitForResponse( 500 )
	      end
	      cResposta  := oServer:responseText                   // <<<<<======= resposta do webservice
	      msginfo( cresposta )
	   catch
	      MsgInfo( 'Erro no Send' )
	   end
	RETURN( .T. )
	// FIM - By kapiaba da peste. kkkkkkkkkkkkkkkkkkkkkkk


Link to comment
Share on other sites

 

Veja se acha o erro... noisemaupraxuxu... kkkkkkkkkkkkkkk

 


#include "fivewin.ch"
	FUNCTION testa_envio()
	   LOCAL CRESPOSTA, SUSER, SPASSWORD, CWEBSERVICE, WARQUIVO, OTXT, NLINHAS
   LOCAL CLINHA, X, AAA, SCONTEUDO, OSERVER
   LOCAL strXml := ""
   LOCAL strret
	   cResposta := ""
   sUser     := "teste"
   sPassword := "Eu92KAQ10p79VPu7t87X"
	   cWebService := "https://hom.crdc.com.br:8443/api/formalizacao/v1?wsdl/"
	   // aaa = curdrive() + ":\" + ALLTRIM(CURDIR()) + "\"  // erro
   aaa := CurDrive() + ":\" + CurDir( CurDrive() )  + "\"
	   // ? aaa
	   warquivo := aaa + "arquivoxmlcrdc.xml"
	   IF FILE( warquivo )
     // NADA A FAZER
   ELSE
	      ? "CADE O ARQUIVO VAN?", aaa, wArquivo
	      RETURN NIL
	   ENDIF
	   oTxt := TTxtFile():New( warquivo )
   nLinhas := oTxt:nTLines
	   oTxt:Gotop()
   cLinha := oTxt:cLine
	   FOR x = 1 TO nlinhas
	      cLinha += alltrim( oTxt:cLine )
	      oTxt:Skip( 1 )
	   NEXT
	   oTxt:Close()
	   sconteudo = cLinha  // <<<<<====== conteúdo do XML que será passado
	   //==============================================================
   // rotina sugerida no fórum
	   //1) Criar o servidor
	   Try
      oServer := CreateObject( "Msxml2.ServerXMLHTTP" )
   Catch
      MsgInfo( 'Erro na Criação do Serviço' )
      RETURN NIL
   End
	   //2) Abrir o servidor
   oServer:Open( "POST", cWebService, .F. )
	   //3) Adicionar o request header
   oServer:SetRequestHeader( "Content-Type", "application/json" )
   oServer:SetRequestHeader( "Username" , "&sUser" )
   oServer:SetRequestHeader( "Password" , "&sPassword" )
	   msginfo( oServer:readyState )                          //<<<<<<======  voltou com status = 1
	   try
	      oServer:Send( sConteudo )                            // <<<<<======= envia o XML
	      WHILE oServer:readyState != 4                        // <<<<<======= nem entrou aqui.. já saiu pelo catch
	         oServer:WaitForResponse( 500 )
	      end
	      cResposta  := oServer:responseText                   // <<<<<======= resposta do webservice
	      msginfo( cresposta )
	   catch
	      MsgInfo( 'Erro no Send' )
	   end
	RETURN( .T. )
	// FIM - By kapiaba da peste. kkkkkkkkkkkkkkkkkkkkkkk

 

bad boy... rs

Mas, o arquivo está lá no diretório, e o #include está no programa principal... 

Acabei de printar o conteúdo a ser enviado antes do send()... 

Ou é alguma outra coisa que eu não vi???  aiai... rs... 

Link to comment
Share on other sites

Oi, Kapiaba e Sistem... 

Muito obrigada pela imensa boa vontade em me ajudar... 

O programa já funcionou antes, então acredito que o problema não esteja na versão do fivewin...

Vou batalhar um pouco mais na questão do ambiente e suas atualizações... 

Vocês são gente muito boa... obrigada mesmo... 

e vamos deixar a rotina aí pro caso de alguém precisar... ;) 

Link to comment
Share on other sites

  • 2 weeks later...

Até ontem estava com mesmo problema, no momento a coisa funcionava e em outro não. Procurei em foruns e buscas pela net, e nada. Então, foquei em não resolver a falha no 
fonte, mesmo porque funcionava! E ai procurei o problema na origem, ou seja, o que poderia causar um mau funcionamento do serverXMLHTTP. Fiz uma passo-a-passo que 
no meu caso resolveu. Espero ajudar á aqueles que estão com a mesma dificuldade.  

Resolvendo falha de comunicação serverXMLHTTP_.doc

Link to comment
Share on other sites

 

Até ontem estava com mesmo problema, no momento a coisa funcionava e em outro não. Procurei em foruns e buscas pela net, e nada. Então, foquei em não resolver a falha no 
fonte, mesmo porque funcionava! E ai procurei o problema na origem, ou seja, o que poderia causar um mau funcionamento do serverXMLHTTP. Fiz uma passo-a-passo que 
no meu caso resolveu. Espero ajudar á aqueles que estão com a mesma dificuldade.  

Resolvendo falha de comunicação serverXMLHTTP_.doc

Oi, Ricardo, boa tarde !

Agradeço pela resposta. Finalmente localizamos o problema no meu cliente.

A empresa que fará a assinatura, havia me passado a informação errada, de que essa porta 8443 do webservice, não checava a certificação, por ser uma porta para testes, portanto, não achamos que o problema poderia estar aí. Ao limpar os certificados expirados e deixar somente os certificados válidos, tudo começou a funcionar conforme o esperado. 

Agradeço as orientações, paciência e sugestões de todos.  

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...