Árvore de páginas

Durante o desenvolvimento de um cliente de Web Services é muito comum necessitarmos enviar mensagens de teste ao servidor, necessitando a alteração rápida do conteúdo, podendo inclusive inserir novas tags. Esse tipo de alteração também é útil durante a identificação de problemas relacionados a classe TWsdlManager, que pode não identificar corretamente algum elemento o tipo declarado no WSDL.

Para tanto podemos utilizar o recurso de envio de mensagens personalizadas da classe TWsdlManager, através do método SendSoapMsg. A mensagem deve ser montada em uma variável do tipo caractere e será enviada ao servidor sem qualquer tipo de verificação prévia. A variável caractere com a mensagem pode ser manipulada livremente.

Para mais informações sobre o envio, verifique a documentação do método SendSoapMsg. Abaixo podemos ver um exemplo de envio de mensagem personalizada enviada a um servidor.

Exemplo de uso da TWsdlManager
User Function Teste()
  Local oWsdl
  Local xRet
  Local cMsg := ""
   
  // Cria o objeto da classe TWsdlManager
  oWsdl := TWsdlManager():New()
   
  // Faz o parse de uma URL
  xRet := oWsdl:ParseURL( "http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" )
  if xRet == .F.
    conout( "Erro: " + oWsdl:cError )
    return .F.
  endif
   
  // Define a operação
  xRet := oWsdl:SetOperation( "GetCityForecastByZIP" )
  if xRet == .F.
    conout( "Erro: " + oWsdl:cError )
    Return
  endif
  
  // Monta uma mensagem SOAP personalizada
  cMsg := "<?xml version='1.0' encoding='UTF-8' standalone='no' ?>"
  cMsg += '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" '
  cMsg += 'xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" '
  cMsg += 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
  cMsg += 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
  cMsg += 'xmlns:ns1="http://ws.cdyne.com/WeatherWS/">'
  cMsg += '<SOAP-ENV:Body>'
  cMsg += '<GetCityForecastByZIP xmlns="http://ws.cdyne.com/WeatherWS/">'
  cMsg += '<ZIP>22313</ZIP>'
  cMsg += '</GetCityForecastByZIP>'
  cMsg += '</SOAP-ENV:Body>'
  cMsg += '</SOAP-ENV:Envelope>'
   
  // Envia uma mensagem SOAP personalizada ao servidor
  xRet := oWsdl:SendSoapMsg( cMsg )
  if xRet == .F.
    conout( "Erro: " + oWsdl:cError )
    return .F.
  endif
return .T.
  • Sem rótulos