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
Abrangência:
Builds superiores a 121227P.
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. |
| |
numérico | nSSLVersion |
| Obtém o protoclo SSL usado na conexão. Valores válidos: 0 - SSLv3 + TLSv1, 1 - TLSv1, 2 - SSLv2, 3 - SSlv3. Valor padrão: 0. |
| |
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. |
lógico | lCompressed |
| Define se o envio da mensagem SOAP será com compactação ou não. Valor padrão: .F. |
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. 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 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. 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 )
else
conout( "Parse feito com sucesso" )
endif
Return 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 SetFirstArray.
- O método fará uma busca pelo nome do elemento, podendo, em decorrência 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.).