Classe TWsdlManager
A classe TWsdlManager faz o tratamento para arquivos WSDL (Web Services Description Language). Esta classe implementa métodos para identificação das informações de envio e resposta das operações definidas, além de métodos para envio e recebimento do documento SOAP.
- Após feito o parse do WSDL, a classe irá disponibilizar uma lista com os elementos que serão definidos na mensagem SOAP que será enviada. A lista possui o nome dos elementos e o id interno deles. Toda vez que for feito o parse do WSDL, o id será o mesmo. Logo, para definir o valor de um elemento utiliza-se o id do mesmo. Mas, é possível também definir o valor passando o nome do elemento, fazendo com que a classe procure o mesmo (o primeiro encontrado ou de acordo com os elementos pai) e defina seu valor.
- WSDL - Web Services Description Language (Linguagem para descrição de web services) é uma linguagem baseada em XML para descrição dos serviços, operações e métodos de um web service. O documento gerado a partir do documento WSDL é no formato SOAP. Para mais informações sobre WSDL acesse o endereço: http://www.w3.org/TR/wsdl.
- SOAP - Simple Object Access Protocol (Protocolo Simples de Acesso a Objetos) é um protocolo baseado em XML para troca de informações estruturadas em plataforma descentralizada e distribuída, normalmente web services. Para mais informações acesse: http://www.w3.org/TR/soap/.
- Para obter mais informações dos modelos regulamentados pela W3C - World Wide Web Consortium, acesso o endereço: http://www.w3c.org.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aOps := {}, aComplex := {}, aSimple := {} // 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 endif aOps := oWsdl:ListOperations() if Len( aOps ) == 0 conout( "Erro: " oWsdl:cError ) Return endif varinfo( "", aOps ) // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) //xRet := oWsdl:SetOperation( aOps[1][1] ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aComplex := oWsdl:ComplexInput() varinfo( "", aComplex ) aSimple := oWsdl:SimpleInput() varinfo( "", aSimple ) // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) //xRet := oWsdl:SetValue( aSimple[1][1], "90210" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Exibe a mensagem que será enviada conout( oWsdl:GetSoapMsg() ) // Envia a mensagem SOAP ao servidor xRet := oWsdl:SendSoapMsg() if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Pega a mensagem de resposta conout( oWsdl:GetSoapResponse() ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif Return
Atributos |
|
lógico |
lVerbose |
|
Habilita log em arquivo para os comandos SOAP enviados e recebidos. Valor padrão: .F. |
lógico |
lStatus |
|
Obtém status de sucesso (.T.) ou falha (.F.) da operação realizada. Atributo somente leitura. |
lógico |
lEnableOptAttr |
|
Habilita no comando SOAP de envio os atributos opcionais. Valor padrão: .F. |
caractere |
cCurrentOperation |
|
Obtém o nome da operação atual. Atributo somente leitura. |
numérico |
nTimeout |
|
Obtém o valor de timeout em segundos para envio e recebimento dos documentos SOAP. Valor padrão: 0 - sem timeout. |
lógico |
lProcResp |
|
Habilita processamento da mensagem de resposta do servidor WSDL. Valor padrão: .T. |
caractere |
cError |
|
Obtém a mensagem de erro para o último comando executado. Atributo somente leitura. |
caractere |
cFaultCode |
|
Obtém fault code da mensagem de retorno do servidor. Atributo somente leitura. |
caractere |
cFaultSubCode |
|
Obtém fault subcode da mensagem de retorno do servidor. Atributo somente leitura. |
caractere |
cFaultString |
|
Obtém fault string da mensagem de retorno do servidor. Atributo somente leitura. |
caractere |
cFaultActor |
|
Obtém fault actor da mensagem de retorno do servidor. Atributo somente leitura. |
caractere |
cLocation |
|
Obtém o endreço do servidor que receberá a mensagem SOAP. |
caractere |
cSSLCACertFile |
|
Obtém o arquivo de certificado de CA usado para conexão SSL com o servidor que receberá a mensagem SOAP. O atributo aceita apenas caminho de arquivos do server caso contrário mostrará o erro "Invalid SSL CA Certificate File – Only Server Path allowed". |
caractere |
cSSLCertFile |
|
Obtém o arquivo de certificado cliente usado para conexão SSL com o servidor que receberá a mensagem SOAP. O atributo aceita apenas caminho de arquivos do server caso contrário mostrará o erro "Invalid SSL Certificate File – Only Server Path allowed". |
caractere |
cSSLKeyFile |
|
Obtém o arquivo de chave primária usado para conexão SSL com o servidor que receberá a mensagem SOAP. O atributo aceita apenas caminho de arquivos do server caso contrário mostrará o erro "Invalid SSL Key File – Only Server Path allowed". |
caractere |
cSSLKeyPwd |
|
Obtém a senha para o certificado usado para conexão SSL com o servidor que receberá a mensagem SOAP. |
lógico |
lUseNSPrefix |
|
Define se vai usar prefixo de namespace antes dos nomes das tags na mensagem SOAP que será enviada. Valor padrão: .F. |
lógico |
lCheckInput |
|
Define se vai verificar as ocorrências dos parâmetros de entrada da mensagem SOAP que será enviada, quando essa não for uma mensagem personalizada. Valor padrão: .T. |
Resumo dos Métodos |
|
|
New() |
|
Cria uma nova instância da classe TWsdlManager. |
lógico |
ParseFile(caractere cFile) |
|
Realiza o parse de um arquivo WSDL através do parâmetro recebido indicando o local do mesmo. |
lógico |
ParseURL(caractere cURL) |
|
Realiza o parse de uma URL que aponta para um arquivo WSDL através do parâmetro recebido indicando o local do mesmo. |
vetor |
|
|
Lista as operações definidas no arquivo WSDL. |
lógico |
SetOperation(caractere cOperation) |
|
O método define a operação atual através do parâmetro cOperation. |
caractere |
|
|
Retorna a documentação do documento WSDL. |
vetor |
|
|
Lista os tipos simples de input para a operação definida. |
vetor |
|
|
Lista os tipos complexos de input para a operação definida que possuem número variável de ocorrências – minOccurs < maxOccurs --. |
vetor |
|
|
Lista os tipos simples de output para a operação definida. |
vetor |
|
|
Lista os tipos complexos de output para a operação definida. |
vetor |
|
|
Lista os tipos simples de fault para a operação definida. |
vetor |
|
|
Lista os tipos complexos de fault para a operação definida. |
lógico |
SetComplexOccurs(numérico nId, numérico nValue) |
|
O método define o número de vezes que um elemento do tipo complexo vai aparecer. |
lógico |
SetValue(numérico nId, caractere cValue) |
|
O método define o valor de entrada para um elemento do WSDL. |
lógico |
SetValues(numérico nId, vetor aValues) |
|
O método define um vetor de valores de entrada para um elemento do WSDL. |
lógico |
SetFirst(caractere cName, caractere cValue) |
|
O método define o valor de entrada para a primeira ocorrência de um elemento do WSDL. |
lógico |
SetFirstArray(caractere cName, vetor aValues) |
|
O método define um vetor de valores de entrada para a primeira ocorrência um elemento do WSDL. |
lógico |
SetValPar(caractere cName, vetor aParents, caractere cValue) |
|
O método define o valor de entrada para um elemento do WSDL, dado os elementos pais. |
lógico |
SetValParArray(caractere cName, vetor aParents, vetor aValues) |
|
O método define um vetor de valores de entrada para um elemento do WSDL, dado os elementos pais. |
lógico |
AddHttpHeader(caractere cName, caractere cValue) |
|
O método adiciona um cabeçalho HTTP à lista de cabeçalhos que serão enviados na mensagem SOAP destinada ao servidor do WSDL. |
caractere |
|
|
Retorna o documento SOAP que será enviado ao servidor. |
lógico |
SendSoapMsg(caractere cMsg) |
|
Envio o documento SOAP gerado ao endereço definido. |
caractere |
|
|
Retorna o documento SOAP de resposta rcebido do servidor. |
caractere |
|
|
Retorna uma string contendo a mensagem SOAP de resposta parseada. |
|
SetProxy(caractere cHost, numérico nPort) |
|
Define o host e porta do proxy para fazer a conexão HTTP. |
lógico |
GetProxy(caractere @cHost, numérico @nPort) |
|
Retorna o host e porta do proxy para fazer a conexão HTTP. |
|
SetCredentials(caractere cUser, caractere cPass) |
|
Define o usuário e senha do proxy para fazer a conexão HTTP. |
lógico |
GetCredentials(caractere @cUser, caractere @cPass) |
|
Retorna o usuário e senha do proxy para fazer a conexão HTTP. |
|
SetAuthentication(caractere cUser, caractere cPass) |
|
Define o usuário e senha usados para fazer autenticação HTTP. |
lógico |
GetAuthentication(caractere @cUser, caractere @cPass) |
|
Retorna o usuário e senha usados para fazer autenticação HTTP. |
Detalhes dos Métodos |
New
New()
Cria uma nova instância da classe TWsdlManager.
ParseFile
lógico ParseFile(caractere cFile)
Realiza o parse de um arquivo WSDL através do parâmetro recebido indicando o local do mesmo.
- O parâmetro aceita apenas caminho de arquivos do server caso contrário mostrará o erro "Invalid WSDL File – Only Server Path allowed".
- Este método realizará a leitura do arquivo e montará a estrutura do objeto, além de analisar se a sintaxe e ordem das tags estão bem formadas.
Parâmetros:
caractere cFile (obrigatório) - Indica o diretório, a partir do rootpath, e o nome de um arquivo WSDL.
Retorno:
lógico lRet - Retorna verdadeiro (.T.) caso tenha sido realizado o parse com sucesso. Caso contrário será retornado falso (.F.).
Exemplos:
User Function Teste() Local oWsdl Local xRet // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\Weather.wsdl" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) else conout( "Parse feito com sucesso" ) endif Return
ParseURL
lógico ParseURL(caractere cURL)
Realiza o parse de uma URL que aponta para um arquivo WSDL através do parâmetro recebido indicando o local do mesmo.
- Este método realizará a leitura do arquivo e montará a estrutura do objeto, além de analisar se a sintaxe e ordem das tags estão bem formadas.
Parâmetros:
caractere cURL (obrigatório) - Indica a URL apontando para um arquivo WSDL. deve iniciar com http:// ou https://.
Retorno:
lógico lRet - Retorna verdadeiro (.T.) caso tenha sido realizado o parse com sucesso Caso contrário será retornado falso (.F.).
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 ) else conout( "Parse feito com sucesso" ) endif Return
ListOperations
vetor ListOperations()
Lista as operações definidas no arquivo WSDL.
Retorno:
vetor aOps - Retorna um array de subarray contendo o nome e a documentação de cada operação disponível.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aOps := {} // 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 endif // Lista as operações disponíveis aOps := oWsdl:ListOperations() varinfo( "", aOps ) Return
SetOperation
lógico SetOperation(caractere cOperation)
O método define a operação atual através do parâmetro cOperation.
- O valor contido em cOperation deve ser igual a um dos valores retornados pela função ListOperations.
Parâmetros:
caractere cOperation (obrigatório) - Nome da operação que será definida como a atual.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aOps := {} // 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 endif aOps := oWsdl:ListOperations() if Len( aOps ) == 0 conout( "Erro: " oWsdl:cError ) Return endif varinfo( "", aOps ) // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) //xRet := oWsdl:SetOperation( aOps[1][1] ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
GetWsdlDoc
caractere GetWsdlDoc()
Retorna a documentação do documento WSDL.
Retorno:
caractere cRet - Retorna a documentação do documento WSDL ou uma string vazia caso não exista.
Exemplos:
User Function Teste() Local oWsdl Local xRet // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de uma URL xRet := oWsdl:ParseURL( "http://www.webservicex.net/globalweather.asmx?WSDL" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif conout( oWsdl:GetWsdlDoc() ) Return
SimpleInput
vetor SimpleInput()
Lista os tipos simples de input para a operação definida.
Retorno:
vetor aSimple - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo simples de input da operação definida.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aSimple := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aSimple := oWsdl:SimpleInput() varinfo( "", aSimple ) Return
ComplexInput
vetor ComplexInput()
Lista os tipos complexos de input para a operação definida que possuem número variável de ocorrências – minOccurs < maxOccurs --.
Retorno:
vetor aComplex - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo complexo de input da operação definida onde mínimo < máximo.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aComplex := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aComplex := oWsdl:ComplexInput() varinfo( "", aComplex ) Return
SimpleOutput
vetor SimpleOutput()
Lista os tipos simples de output para a operação definida.
Retorno:
vetor aSimple - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo simples de output da operação definida.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aSimple := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aSimple := oWsdl:SimpleOutput() varinfo( "", aSimple ) Return
ComplexOutput
vetor ComplexOutput()
Lista os tipos complexos de output para a operação definida.
Retorno:
vetor aComplex - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo complexo de output da operação definida.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aComplex := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aComplex := oWsdl:ComplexOutput() varinfo( "", aComplex ) Return
SimpleFault
vetor SimpleFault()
Lista os tipos simples de fault para a operação definida.
Retorno:
vetor aSimple - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo simples de fault da operação definida.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aSimple := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aSimple := oWsdl:SimpleFault() varinfo( "", aSimple ) Return
ComplexFault
vetor ComplexFault()
Lista os tipos complexos de fault para a operação definida.
Retorno:
vetor aComplex - Retorna um array de subarray contendo o id, nome do parâmetro, valor mínimo de ocorrências, valor máximo de ocorrências e um array com as tags pai de cada tipo complexo de fault da operação definida.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aComplex := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif aComplex := oWsdl:ComplexFault() varinfo( "", aComplex ) Return
SetComplexOccurs
lógico SetComplexOccurs(numérico nId, numérico nValue)
O método define o número de vezes que um elemento do tipo complexo vai aparecer.
- Por se tratar de um tipo complexo, esse método define apenas o número de vezes que o mesmo irá aparecer. Os elementos internos ao elemento do tipo complexo serão definidos pelos métodos SetValue ou SetValues.
Parâmetros:
numérico nId (obrigatório) - ID do elemento igual ao informado pela função ComplexInput.
numérico nValue (obrigatório) - Quantidade de vezes que o elemento vai aparecer.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aComplex := {} // Cria o objeto da classe TWsdlManager oWsdl := TWsdlManager():New() // Faz o parse de um arquivo xRet := oWsdl:ParseFile( "\rapidao.wsdl" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif xRet := oWsdl:SetOperation( "executedanfeReceipt" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Pega a lista de tipos complexos aComplex := oWsdl:ComplexInput() // Define para o primeiro tipo complexo que o número de ocorrências será 2. oWsdl:SetComplexOccurs( aComplex[1][1], 2 ) Return
SetValue
lógico SetValue(numérico nId, caractere cValue)
O método define o valor de entrada para um elemento do WSDL.
- Esse método define apenas um valor para um elemento. Para definir mais valores, utilize a função SetValues.
Parâmetros:
numérico nId (obrigatório) - ID do elemento igual ao informada pela função SimpleInput.
caractere cValue (obrigatório) - Valor para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
SetValues
lógico SetValues(numérico nId, vetor aValues)
O método define um vetor de valores de entrada para um elemento do WSDL.
- Se uma tag suporta mais de um valor, só é necessário chamar uma vez a função, passando o ID do elemento e o vetor com todos os valores. Se for definir só um valor, deve-se passar um vetor com só um valor.
Parâmetros:
numérico nId (obrigatório) - ID do elemento igual ao informada pela função SimpleInput.
vetor aValues (obrigatório) - Vetor de valores para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aValues := {} // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário aAdd( aValues, "90210" ) xRet := oWsdl:SetValues( 0, aValues ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
SetFirst
lógico SetFirst(caractere cName, caractere cValue)
O método define o valor de entrada para a primeira ocorrência de um elemento do WSDL.
- O método irá definir o valor para a primeira ocorrência de cName que for encontrada, sem levar em consideração as tags pai do elemento.
- Esse método define apenas um valor para um elemento. Para definir mais valores, utilize a função SetFirstAr.
- O método fará uma busca pelo nome do elemento, podendo, em decorrencia do tamanho da mensagem, haver ligeira perda de performance.
Parâmetros:
caractere cName (obrigatório) - Nome do elemento igual ao informado pela função SimpleInput.
caractere cValue (obrigatório) - Valor para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetFirst( "ZIP", "90210" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
SetFirstArray
lógico SetFirstArray(caractere cName, vetor aValues)
O método define um vetor de valores de entrada para a primeira ocorrência um elemento do WSDL.
- O método irá definir o valor para a primeira ocorrência de cName que for encontrada, sem levar em consideração as tags pai do elemento.
- Se uma tag suporta mais de um valor, só é necessário chamar uma vez a função, passando o ID do elemento e o vetor com todos os valores. Se for definir só um valor, deve-se passar um vetor com só um valor.
- O método fará uma busca pelo nome do elemento, podendo, em decorrencia do tamanho da mensagem, haver ligeira perda de performance.
Parâmetros:
caractere cName (obrigatório) - Nome do elemento igual ao informado pela função SimpleInput.
vetor aValues (obrigatório) - Vetor de valores para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aValues := {} // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário aAdd( aValues, "90210" ) xRet := oWsdl:SetFirstArray( "ZIP", aValues ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
SetValPar
lógico SetValPar(caractere cName, vetor aParents, caractere cValue)
O método define o valor de entrada para um elemento do WSDL, dado os elementos pais.
- Esse método define apenas um valor para um elemento. Para definir mais valores, utilize a função SetValParA.
- O método fará uma busca pelo nome do elemento, podendo, em decorrencia do tamanho da mensagem, haver ligeira perda de performance.
Parâmetros:
caractere cName (obrigatório) - Nome do elemento igual ao informado pela função SimpleInput.
vetor aParents (obrigatório) - Vetor com os elementos pais de cName.
caractere cValue (obrigatório) - Valor para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aParents := {} // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif //Define os elementos pai aAdd( aParents, "GetCityForecastByZIP" ) // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValPar( "ZIP", aParents, "90210" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
SetValParArray
lógico SetValParArray(caractere cName, vetor aParents, vetor aValues)
O método define um vetor de valores de entrada para um elemento do WSDL, dado os elementos pais.
- Se uma tag suporta mais de um valor, só é necessário chamar uma vez a função, passando o nome do elemento e o vetor com todos os valores. Se for definir só um valor, deve-se passar um vetor com só um valor.
- O método fará uma busca pelo nome do elemento, podendo, em decorrencia do tamanho da mensagem, haver ligeira perda de performance.
Parâmetros:
caractere cName (obrigatório) - Nome do elemento igual ao informado pela função SimpleInput.
vetor aParents (obrigatório) - Vetor com os elementos pais de cName.
vetor aValues (obrigatório) - Vetor de valores para esse elemento.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga definir. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet Local aParents := {}, aValues := {} // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif //Define os elementos pai aAdd( aParents, "GetCityForecastByZIP" ) // Define o valor de cada parâmeto necessário aAdd( aValues, "90210" ) xRet := oWsdl:SetValParArray( "ZIP", aParents, aValues ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif Return
AddHttpHeader
lógico AddHttpHeader(caractere cName, caractere cValue)
O método adiciona um cabeçalho HTTP à lista de cabeçalhos que serão enviados na mensagem SOAP destinada ao servidor do WSDL.
- Os cabeçalhos Accept, Accept-Encoding, Content-Length, Content-Type, Expect, Host, SOAPAction, User-Agent não podem ser usados por esse método.
- Os valores passados em cName e cValue devem ter conteúdo.
Parâmetros:
caractere cName (obrigatório) - Nome do cabeçalho que será adicionado.
caractere cValue (obrigatório) - Valor do cabeçalho que será adicionado.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga adicionar. Falso (.F.) caso contrário.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Adiciona cabeçalho aos cabeçalhos HTTP que serão enviados xRet := oWsdl:AddHttpHeader( "Pragma", "no-cache" ) if xRet == .F. Return endif // Envia a mensagem SOAP ao servidor xRet := oWsdl:SendSoapMsg() if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif Return
GetSoapMsg
caractere GetSoapMsg()
Retorna o documento SOAP que será enviado ao servidor.
Retorno:
caractere cRet - Retorna o documento SOAP que será enviado ao servidor.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " + oWsdl:cError ) Return endif // Pega a mensagem SOAP que será enviada ao servidor conout( oWsdl:GetSoapMsg() ) Return
SendSoapMsg
lógico SendSoapMsg(caractere cMsg)
Envio o documento SOAP gerado ao endereço definido.
- Em caso de erro, olhar as os atributos cErro, cFaultCode, cFaultSubCode, cFaultString e cFaultActor.
- Se o atributo lProcResp estiver definido como .F. e houver falha, o método irá retornar .T., mas a mensagem de erro bruta pode ser pega chamando o método GetSoapResponse.
Parâmetros:
caractere cMsg (opcional) - Indica a mensagem SOAP que será enviada, ao invés da mensagem gerada pela lib usando os valores que forma definidos. Opcional.
Retorno:
lógico lRet - Verdadeiro (.T.) caso consiga enviar o documento e receber a reposta do servidor. Falso (.F.) caso contrário.
Exemplos:
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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Envia a mensagem SOAP ao servidor xRet := oWsdl:SendSoapMsg() if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif 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 endif Return
GetSoapResponse
caractere GetSoapResponse()
Retorna o documento SOAP de resposta rcebido do servidor.
Retorno:
caractere cRet - Retorna o documento SOAP de resposta rcebido do servidor.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Envia a mensagem SOAP ao servidor xRet := oWsdl:SendSoapMsg() if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Pega a mensagem de resposta conout( oWsdl:GetSoapResponse() ) Return
GetParsedResponse
caractere GetParsedResponse()
Retorna uma string contendo a mensagem SOAP de resposta parseada.
Retorno:
caractere cRet - Retorna uma string contendo a mensagem SOAP de resposta parseada, contendo uma linha para cada elemento existente na mensagem de resposta, onde cada linha está no formato elemento:valor, sendo que os elementos do tipo complexo tem um caracter tab CHR 9 antes do nome do elemento quando iniciam e uma linha só com CHR 9 quando fecham.
Exemplos:
User Function Teste() Local oWsdl Local xRet // 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 endif // Define a operação xRet := oWsdl:SetOperation( "GetCityForecastByZIP" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Define o valor de cada parâmeto necessário xRet := oWsdl:SetValue( 0, "90210" ) if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Envia a mensagem SOAP ao servidor xRet := oWsdl:SendSoapMsg() if xRet == .F. conout( "Erro: " oWsdl:cError ) Return endif // Pega a mensagem de resposta parseada conout( oWsdl:GetParsedResponse() ) Return
SetProxy
SetProxy(caractere cHost, numérico nPort)
Define o host e porta do proxy para fazer a conexão HTTP.
Parâmetros:
caractere cHost (obrigatório) - Indica o host do proxy para fazer a conexão HTTP.
numérico nPort (obrigatório) - Indica a porta do proxy para fazer a conexão HTTP.
GetProxy
lógico GetProxy(caractere @cHost, numérico @nPort)
Retorna o host e porta do proxy para fazer a conexão HTTP.
Parâmetros:
caractere @cHost (obrigatório) (referência) - Indica o host do proxy para fazer a conexão HTTP.
numérico @nPort (obrigatório) (referência) - Indica a porta do proxy para fazer a conexão HTTP.
Retorno:
lógico lRet - Retorna se o proxy está habilitado (.T.) ou não (.F.).
SetCredentials
SetCredentials(caractere cUser, caractere cPass)
Define o usuário e senha do proxy para fazer a conexão HTTP.
Parâmetros:
caractere cUser (obrigatório) - Indica o usuário do proxy para fazer a conexão HTTP.
caractere cPass (obrigatório) - Indica a senha do proxy para fazer a conexão HTTP.
GetCredentials
lógico GetCredentials(caractere @cUser, caractere @cPass)
Retorna o usuário e senha do proxy para fazer a conexão HTTP.
Parâmetros:
caractere @cUser (obrigatório) (referência) - Indica o usuário do proxy para fazer a conexão HTTP.
caractere @cPass (obrigatório) (referência) - Indica a senha do proxy para fazer a conexão HTTP.
Retorno:
lógico lRet - Retorna se o proxy está habilitado (.T.) ou não (.F.).
SetAuthentication
SetAuthentication(caractere cUser, caractere cPass)
Define o usuário e senha usados para fazer autenticação HTTP.
Parâmetros:
caractere cUser (obrigatório) - Indica o usuário usado para fazer autenticação HTTP.
caractere cPass (obrigatório) - Indica a senha usada para fazer autenticação HTTP.
GetAuthentication
lógico GetAuthentication(caractere @cUser, caractere @cPass)
Retorna o usuário e senha usados para fazer autenticação HTTP.
Parâmetros:
caractere @cUser (obrigatório) (referência) - Indica o usuário usado para fazer autenticação HTTP.
caractere @cPass (obrigatório) (referência) - Indica a senha usada para fazer autenticação HTTP.
Retorno:
lógico lRet - Retorna se a autenticação HTTP está habilitada (.T.) ou não (.F.).