PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE

Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Panorama general
  • Importar un servicio web a un proyecto
  • Importar
  • Explorador de proyectos: ver un servicio web
  • Descripción y propiedades de un servicio web
  • Actualización de la descripción de un servicio web
  • Propiedades de un servicio web modificable en el editor
  • Uso de un servicio web
  • Principio
  • Propiedades asociadas al Webservice
  • Propiedades disponibles sobre los tipos de variables
  • Operaciones avanzadas del flujo XML del Webservice
  • Caso especial: el Webservice devuelve un resultado cuyo tipo no es reconocido por WINDEV, WEBDEV y WINDEV Mobile
  • Distribución de una aplicación WINDEV que utiliza un servicio web
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Panorama general
WINDEV, WEBDEV y WINDEV Mobile le permiten importar directamente servicios web a sus aplicaciones.
Un Webservice es un conjunto de puntos de entrada que se ponen a disposición de los usuarios para realizar diferentes procesos. Por ejemplo, un servicio de acceso remoto proporciona los procesos utilizados para acceder a los datos. Los intercambios de información con un Webservice se realizan en formato XML y utilizan los protocolos SOAP (Simple Object Access Protocol) y HTTP.
A partir de la descripción en formato WSDL (Web Services Description Language) de este servicio, WINDEV, WEBDEV o WINDEV Mobile generará automáticamente los tipos de WLanguage y las funciones correspondientes a la interfaz de programación del Webservice.
Nota: Para la compatibilidad con las versiones anteriores, también puede pedir que se genere un conjunto de procedimientos o una clase cuyos métodos correspondan a las operaciones de Webservice. Sin embargo, le recomendamos que utilice el nuevo mecanismo para la generación automática de tipos nativos.
Para utilizar el Webservice, todo lo que tiene que hacer es utilizar las funciones generadas durante la importación.
Esta página de ayuda presenta:
Versiones 17 y posteriores
Java Esta función ya está disponible para las aplicaciones Java.
Android Esta función ya está disponible para las aplicaciones Android.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
Android El uso de un servicio web en un proyecto Android está disponible desde la versión 2.2 de Android.
Java El uso de un servicio web en un proyecto Java requiere una máquina virtual Java (JRE) en la versión 6 (o 6.1) o posterior.
Nueva funcionalidad versión 17
Java Esta función ya está disponible para las aplicaciones Java.
Android Esta función ya está disponible para las aplicaciones Android.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
Android El uso de un servicio web en un proyecto Android está disponible desde la versión 2.2 de Android.
Java El uso de un servicio web en un proyecto Java requiere una máquina virtual Java (JRE) en la versión 6 (o 6.1) o posterior.
Java Esta función ya está disponible para las aplicaciones Java.
Android Esta función ya está disponible para las aplicaciones Android.
iPhone/iPad Esta función ya está disponible para las aplicaciones iPhone/iPad.
Android El uso de un servicio web en un proyecto Android está disponible desde la versión 2.2 de Android.
Java El uso de un servicio web en un proyecto Java requiere una máquina virtual Java (JRE) en la versión 6 (o 6.1) o posterior.
Versiones 18 y posteriores
Universal Windows 10 App Esta función ya está disponible para las aplicaciones en el modo de aplicaciones de Windows Store.
Nueva funcionalidad versión 18
Universal Windows 10 App Esta función ya está disponible para las aplicaciones en el modo de aplicaciones de Windows Store.
Universal Windows 10 App Esta función ya está disponible para las aplicaciones en el modo de aplicaciones de Windows Store.
Importar un servicio web a un proyecto

Importar

Para importar un servicio web:
  1. Seleccione la opción "Taller .. Webservices (SOAP, .Net, J2EE) .. Importar y utilizar un Webservice en este proyecto". Se inicia el asistente para importar un servicio web.En la pestaña "Proyecto", en el grupo "Proyecto", despliegue "Importar" y seleccione "Un Webservice (Soap, .Net, J2EE)".
    Se inicia el asistente para importar un servicio web.
    En la pestaña "Proyecto", en el grupo "Proyecto", despliegue "Importar" y seleccione "Un Webservice (Soap, .Net, J2EE)". Se inicia el asistente para importar un servicio web.En la pestaña "Proyecto", en el grupo "Proyecto" despliegue "Importar" y seleccione "Un Webservice".
    Menú para importar un servicio web
    Se inicia el asistente para importar un servicio web.
  2. En el asistente, se visualiza la pantalla de presentación. Ir al siguiente paso.
  3. Especificar la ubicación del WSDL. Este archivo corresponde a la descripción del servicio web. Contiene la descripción de cada una de las funciones que se encuentran en el Webservice, así como sus parámetros..
    Se pueden utilizar dos métodos para localizar el WSDL:
    • desde una dirección URL, HTTP donde se encuentra el WSDL.
      comentario:
      • Tiene la capacidad de especificar el nombre de usuario y la contraseña si se requiere una autenticación..
      • Versiones 22 y posteriores
        El botón "Proxy" permite configurar las opciones del proxy si es necesario.
        Nueva funcionalidad versión 22
        El botón "Proxy" permite configurar las opciones del proxy si es necesario.
        El botón "Proxy" permite configurar las opciones del proxy si es necesario.
    • de un archivo XML que se encuentra en el ordenador actual.
    Nota: No recomendamos seleccionar la opción "Importar en modo compatible con la versión 14". En este caso, la gestión de las llamadas al Webservice es más compleja y no se soportan los nuevos tipos (arrays, structure, ....). Ver Importación de servicios web en modo compatible para más detalles.
  4. Validar el asistente. Aparece un mensaje indicando que la importación ha finalizado..
  5. El Webservice se agrega automáticamente en el panel "Explorador de proyectos" (en la rama "Webservices"). Está listo para su uso.

Explorador de proyectos: ver un servicio web

El Webservice importado se encuentra en la carpeta "Webservices" del explorador de proyectos:
La estructura incluye:
  • el nombre del servicio web (GlobalWeather en este ejemplo).
  • el nombre de cada función (GetCitiesByCountry y GetWeather en este ejemplo).
  • el nombre de una estructura que contiene los parámetros de llamada (GetWeather en este ejemplo), o los valores de retorno (GetWeatherResponse en este ejemplo).
  • el nombre de cada variable que se encuentra en la estructura (CountryName y CityName en este ejemplo).
En nuestro ejemplo, el Webservice importado se llama: Clima Global. Contiene 2 funciones:
  • GetCitiesByCountry
  • GetWeather
La función GetCitiesByCountry contiene 2 estructuras:
  • GetCityByCountry
  • GetCityByCountryResponse
La función GetWeather contiene 2 estructuras:
  • GetWeather
  • Obtener respuesta a la meteorología
La estructura GetWeather contiene 2 variables (CityName y CountryName) correspondientes a los valores que deben pasarse en parámetro para la llamada a la función GetWeather.
La estructura GetWeatherResponse contiene una variable (GetWeatherResult) correspondiente al valor de retorno de la función.
Descripción y propiedades de un servicio web

Actualización de la descripción de un servicio web

Cuando un servicio web evoluciona (correcciones, nuevas versiones, etc.), su descripción también puede evolucionar.
Para actualizar la descripción de un Webservice en su proyecto:
  1. Seleccione el Webservice en la pestaña "Explorador de proyectos"
  2. Seleccione la opción "Actualizar" en el menú contextual.
Nota: Los Webservices importados utilizando el mecanismo de compatibilidad con las versiones anteriores no pueden actualizarse.

Propiedades de un servicio web modificable en el editor

Para modificar las propiedades de un servicio web en el editor:
  1. Seleccione el Webservice en la pestaña "Explorador de proyectos"
  2. Seleccione la opción "Descripción" del menú contextual.
  3. Se muestra la ventana de propiedades. Las siguientes propiedades pueden ser modificadas en esta ventana:
    • La dirección de importación de Webservice: es la URL utilizada para llegar al WSDL que describe el servicio web.
    • El nombre de usuario y la contraseña utilizados para importar el WSDL.
Uso de un servicio web

Principio

Para utilizar un servicio web, usted debe:
  1. Declare 2 variables: una variable utilizada para especificar los parámetros de llamada y una variable utilizada para recuperar la respuesta.
  2. Inicializar cada variable de la estructura de llamada.
  3. Llamar a la función Webservice pasando la variable call en parámetro y recuperar la variable response en retorno.
Ejemplo:
v1 is GetWeather
v2 is GetWeatherResponse

v1.CountryName = "FRANCE"
v1.CityName = "PARIS"

v2 = GetWeather(v1)

Info(v2.GetWeatherResult)
En la mayoría de los casos, el resultado devuelto por el Webservice está en formato XML. Por lo tanto, las funciones XML deben utilizarse para decodificar la respuesta.

Propiedades asociadas al Webservice

Para manipular un Webservice por programación, todo lo que tienes que hacer es usar el nombre del Webservice (que se encuentra en el explorador de proyectos).
Nota: Se puede realizar un arrastrar y soltar desde el explorador de proyectos hasta el editor de código para insertar el nombre del servicio web.
Las siguientes propiedades pueden ser modificadas por programación:
denominarTipo utilizadoEfecto
DirecciónCadena de caracteresSe utiliza para sustituir la dirección de llamada del servicio web descrito en el WSDL por otra URL.. Esta propiedad es útil si el Webservice está alojado en diferentes servidores.
Esta propiedad tiene el siguiente formato: "http://servidor:puerto/ruta_del_webservice".
Para un Webservice generado con WINDEV y desplegado en un Servidor de aplicaciones WEBDEV, es la URL del archivo de extensión "awws".
Notas:
  • La modificación de esta propiedad sustituye a todas las URLs descritas en el WSDL.
  • Si esta propiedad corresponde a una cadena vacía, se volverán a utilizar las URL descritas en el WSDL.
Versiones 19 y posteriores
WINDEVWEBDEV - Código Servidor Autenticación
Nueva funcionalidad versión 19
WINDEVWEBDEV - Código Servidor Autenticación
WINDEVWEBDEV - Código Servidor Autenticación
Constante de tipo enteroSe usa para forzar el método de autenticación HTTP:
  • auAutomatic (valor por defecto): método de autenticación automática.
  • auBasic: Método básico de autenticación.
  • auNegotiate: Negociar el método de autenticación.
IgnoreErrorCombinación de constantesSe utiliza para ignorar los errores de certificado. se pueden utilizar las siguientes constantes:
  • httpIgnoreInvalidCertificate: Se utiliza para ignorar un certificado no válido o un certificado procedente de una empresa desconocida.
  • httpIgnoreInvalidCertificateName: Se utiliza para ignorar el nombre del sitio que se encuentra en el certificado.
  • httpIgnoreExpiredCertificate: Se utiliza para ignorar la fecha del certificado.
  • httpIgnoreRedirectToHTTP: Se utiliza para redirigir a un servidor no seguro.
  • httpIgnoreRedirectToHTTTPS: Se utiliza para redirigir a un servidor seguro.
  • httpIgnoreRevocation: Se utiliza para ignorar la verificación en la lista de certificados revocados..
AndroidUniversal Windows 10 AppJava comentario: Se ignoran los errores relativos a la seguridad de las transacciones.. IgnorarError no está disponible.
comentario:
  • Universal Windows 10 App Se ignoran los errores relativos a la seguridad de las transacciones.. IgnorarError no está disponible.
  • AndroidJava
    Antes de la versión 200057, se ignoraban los errores de seguridad de las transacciones.. IgnorarError no estaba disponible.
    A partir de la versión 200057, se soportan los siguientes errores: httpIgnoreExpiredCertificate, httpIgnoreInvalidCertificate, httpIgnoreInvalidCertificateName, httpIgnoreRevocation. Se ignoran los otros errores. Para la compatibilidad con versiones anteriores, todos los errores se ignoran de forma predeterminada..
Versiones 18 y posteriores
MétodoHTTP
Nueva funcionalidad versión 18
MétodoHTTP
MétodoHTTP
Constante de tipo enteroMétodo HTTP utilizado para llamar al servicio web:
  • httpPost (valor por defecto): Método POST
  • httpPut: Método PUT
PortCadena de caracteresNombre del puerto definido en el WSDL. Es el puerto utilizado para comunicarse con el servidor que alberga el Webservice.. Consulte a su administrador de red o al propietario del servicio web.
drogadictaCadena de caracteresNombre de usuario que se utilizará para realizar la autenticación durante las peticiones HTTP al servicio web.. Este nombre sólo se utiliza si se requiere una autenticación para acceder al servidor en el que está alojado el Webservice.
ContraseñaCadena de caracteresContraseña utilizada para realizar la autenticación durante las peticiones HTTP al servicio web. Este nombre sólo se utiliza si se requiere una autenticación para acceder al servidor en el que está alojado el Webservice.

nota:
  • Si se especifica un nombre de usuario y una contraseña, la autenticación de las solicitudes HTTP se realizará utilizando el esquema de autenticación "Basic", en el que los parámetros se indican claramente en la solicitud HTTP.. Recomendamos que utilice solicitudes HTTPS si se requiere la autenticación.
  • Si el servidor que hospeda el servicio web requiere una autenticación de Windows en HTTP, HTTPParameter debe ser llamado antes de consumir el servicio web (para que Internet Explorer pueda ser usado para las peticiones HTTP).
Atención: Las propiedades modificables en el editor y las propiedades modificables por programación no tienen ningún vínculo.

Propiedades disponibles sobre los tipos de variables

Los tipos de variables que se declaran automáticamente al importar el WSDL proponen varias propiedades:
denominarTipo utilizadoEfecto
ExistBooleano
  • True si el tipo de variable existe en la respuesta del Webservice,
  • en casoFalse contrario.
OcurrenciaEnteroNúmero de elementos de este tipo en la respuesta del Webservice.
Un Webservice puede devolver arrays variables. La propiedad ..Occurrence permite conocer el tamaño del array devuelto y el operador [ ] permite acceder a los elementos del array.
escribir a máquinaCadena de caracteresNombre del tipo de variable. Esta propiedad se utiliza cuando es probable que un servicio web devuelva respuestas de diferentes tipos.
ValorVariantValor de la variable.
Nota: A esta propiedad se accede por defecto cuando sólo se utiliza el nombre de la variable. Por ejemplo:
myWebservice.RequestVariable = EDT_Value
es equivalente a:
myWebservice.RequestVariable..Value = EDT_Value
AndroidJava No se puede utilizar un método que administre un contexto compartido.

Operaciones avanzadas del flujo XML del Webservice

En algunos casos, es posible que tenga que utilizar manipular el flujo de datos XML intercambiado con el Webservice. Algunos Webservices piden, por ejemplo, que se añadan cabeceras a su flujo XML para permitir la autenticación o devolver información meta en las cabeceras de respuesta.
Las siguientes funciones pueden utilizarse para responder a estas solicitudes concretas:
SOAPPrepareConstruye la petición al Webservice para una función y parámetros dados pero no la envía.
SOAPAddHeaderAñade cabeceras personalizadas en una llamada a un servicio web.
SOAPGetHeaderVuelve a leer la información que se encuentra en el encabezado de la respuesta del servicio web.
Atributo SOAPAddAttributeDeclara los atributos adicionales (no encontrados en el WSDL) en una variable de servicio web generada automáticamente. Se utiliza en programación avanzada cuando el WSDL devuelto por el Webservice no corresponde exactamente al tipo esperado.

Caso especial: el Webservice devuelve un resultado cuyo tipo no es reconocido por WINDEV, WEBDEV y WINDEV Mobile

Los tipos de variables disponibles en WINDEV y las disponibles en un servicio web SOAP pueden diferir.
Los tipos simples (booleanos, enteros, etc.) y los tipos complejos (fecha-hora, duración, estructuras, arrays de tipos simples y array de estructuras, estructuras anidadas, etc.) utilizados en el Webservice se convierten automáticamente al formato WLanguage (y a la inversa) cuando el servicio se importa a un proyecto.. También se soportan los Array tipos.
Los tipos más evolucionados (clases, tipos avanzados de WLanguage, etc.) se procesan como cadenas de caracteres en el código de WLanguage.. Estas cadenas de caracteres contienen el código XML correspondiente al tipo de variable devuelta por el Webservice y a su contenido.
Por lo tanto, si un Webservice devuelve un resultado como instancia de clase, este resultado se procesará en el procedimiento como una cadena de caracteres en formato XML.. A continuación, deberá procesar este string (en WLanguage) para extraer la información solicitada.. Ver el Funciones XML para más detalles.
Notas:
  • Si el Webservice devuelve una estructura, el nombre de los miembros que se encuentran en la estructura de devolución distingue entre mayúsculas y minúsculas.
  • Si utiliza una estructura como parámetro de una función de Webservice y no se asigna un miembro de tipo DATE, se mostrará el siguiente error "El valor 0000-00-00 no respeta el esquema XSD".
Distribución de una aplicación WINDEV que utiliza un servicio web
Para distribuir una aplicación que utiliza un servicio web, todo lo que tiene que hacer es incluir el archivo que describe el servicio web (archivo.wsdl) en la biblioteca de la aplicación.
Para que la aplicación pueda ejecutar el Webservice, los ordenadores del usuario final deben tener acceso a Internet.
Nota: Antes de distribuir una aplicación que esté utilizando un Webservice, le recomendamos que compruebe la licencia y los derechos de distribución de este servicio (en caso de que exista un servicio gratuito).
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Alterando o endereço do Webservice
localurl is boolean//

IF localurl = False THEN
WebserviceJson..Address = "http://DESKTOP-C6804SU/WEBSERVICESOAP_WEB/awws/WebserviceJson.awws"
ELSE
WebserviceJson..Address = "http://200.203.134.1/WEBSERVICESOAP_WEB/awws/WebserviceJson.awws"
END

varx is string = WebserviceJson..Address

envio01 is a ws_select_clientesResponse //inicia o metodo

envio01 = ws_select_clientes("Adriano") //passagem de parametros

sResultado is string = envio01.ws_select_clientesResult // pegando o resultado

stArrClientes is Structure
clientesID is 8-bytes int
nome is string
telefone is string
status is boolean
avatar is string
token is string
END

arrClientes is array of stArrClientes

arrClientes = JSONToVariant(sResultado)

FOR EACH stcliente OF arrClientes

TableAdd(TABLE_Clientes,stcliente.nome +TAB+ stcliente.telefone +TAB+ stcliente.status)

END

BOLLER
07 08 2018
Consumir WebService - Cotação Dolar
//Buscar em Json
// http://api.promasters.net.br/cotacao/
s_url is string="http://api.promasters.net.br/cotacao/v1/valores"
IF HTTPRequest(s_url) THEN
SAI_Resultado= HTTPGetResult()
END
let jz=JSONToVariant(SAI_Resultado)
TableDeleteAll(TABLE_indices)
FOR EACH _m OF jz..Member
TableAddLine(TABLE_indices,_m..Name+TAB+" = "+_m..Value)
TableAddLine(TABLE_indices,"=========================")
mebros(_m)
END
INTERNAL PROCEDURE mebros(x)
FOR EACH _m2 OF x..Member
TableAddLine(TABLE_indices,_m2.nome,_m2.valor,_m2.fonte,_m2.ultima_consulta)
END
END

//

//Buscal em Xml
s_url is string="http://api.promasters.net.br/cotacao/v1/valores?alt=xml"
IF HTTPRequest(s_url) THEN
SAI_Resultado= HTTPGetResult()
END
TableDeleteAll(TABLE_indices) // Elimina Dados da Tabela
XMLDocument("XML1",SAI_Resultado)
_status is string=XMLRead("XML1","/Root/status")
TableAddLine(TABLE_indices,"Status",_status)
s_nome is string=""
s_valor is string=""
s_fonte is string=""
s_ultima_consulta is string=""
s_nome_tag is string=""
XMLFind("XML1",Null,XMLElément+XMLChildItem,XMLStartWith)
WHILE XMLFound("XML1") //Percorrer xml
SWITCH XMLElementType("XML1")
CASE XMLTag :
s_nome_tag = XMLElementName("XML1") // vou pegar nome da tag
IF s_nome_tag="nome" THEN s_nome=XMLData("XML1")
IF s_nome_tag="valor" THEN s_valor=XMLData("XML1")
IF s_nome_tag="ultima_consulta" THEN s_ultima_consulta=XMLData("XML1")
IF s_nome_tag="fonte" THEN s_fonte=XMLData("XML1")
END
IF s_fonte<>"" THEN
TableAddLine(TABLE_indices,s_nome,s_valor,s_fonte,s_ultima_consulta)
s_nome=""
s_valor=""
s_fonte=""
s_ultima_consulta=""
END
XMLNext("XML1")
END
XMLClose("XML1")
//Fim Buscal em Xml

// Blog com Video E Exemplo

http://windevdesenvolvimento.blogspot.com.br/2017/02/aula-1055-webservice-007-consumir.html

https://www.youtube.com/watch?v=YbQPRcX5iVE

De matos
21 02 2017
Consumir WebService - Cnpj Receita
//Retorno Json
{
"atividade_principal": [
{
"text": "Desenvolvimento e licenciamento de programas de computador customizáveis",
"code": "62.02-3-00"
}
],
"data_situacao": "03/11/2005",
"complemento": "SALA 15",
"nome": "MATOS INFORMATICA - EIRELI - EPP",
"uf": "RS",
"telefone": "(51) 3595-1132 / (51) 3595-2474",
"atividades_secundarias": [
{
"text": "Desenvolvimento e licenciamento de programas de computador não-customizáveis",
"code": "62.03-1-00"
}
],
"qsa": [
{
"qual": "65-Titular Pessoa Física Residente ou Domiciliado no Brasil",
"nome": "AMARILDO DE MATOS"
}
],
"situacao": "ATIVA",
"bairro": "PATRIA NOVA",
"logradouro": "R PARAIBA",
"numero": "198",
"cep": "93.410-130",
"municipio": "NOVO HAMBURGO",
"abertura": "23/05/1989",
"natureza_juridica": "230-5 - Empresa Individual de Responsabilidade Limitada (de Natureza Empresária)",
"cnpj": "92.715.978/0001-58",
"ultima_atualizacao": "2017-01-04T22:35:08.977Z",
"status": "OK",
"tipo": "MATRIZ",
"fantasia": "",
"email": "",
"efr": "",
"motivo_situacao": "",
"situacao_especial": "",
"data_situacao_especial": "",
"capital_social": "100000.00",
"extra": {}
}
//
//Buscar em Json
// https://www.receitaws.com.br/v1/cnpj/NumeroCnpj
//https://www.receitaws.com.br/v1/cnpj/92715978000158
s_url is string="https://www.receitaws.com.br/v1/cnpj/"+SAI_Cnpj
IF HTTPRequest(s_url) THEN
SAI_resultado= HTTPGetResult()
//Vai retornar os dados do cnpj em Json
END

_dados_atividade is Structure
text is string
code is string
FIN
_dados_qsa is Structure
qual is string
nome is string
FIN
_dados_cnpj is Structure
atividade_principal is array of _dados_atividade
atividades_secundarias is array of _dados_atividade
qsa is array of _dados_qsa
data_situacao is string
complemento is string
nome is string
uf is string
telefone is string
situacao is string
bairro is string
logradouro is string
numero is string
cep is string
municipio is string
abertura is string
natureza_juridica is string
cnpj is string
ultima_atualizacao is string
status is string
tipo is string
fantasia is string
email is string
efr is string
motivo_situacao is string
situacao_especial is string
data_situacao_especial is string
capital_social is string
END

_estrutura_dados_cnpj is _dados_cnpj
Deserialize(_estrutura_dados_cnpj,SAI_resultado,psdJSON)

FOR EACH _atividade OF _estrutura_dados_cnpj.atividade_principal
Info(_atividade.text+CR+_atividade.code)
END
FOR EACH _atividade_secundaria OF _estrutura_dados_cnpj.atividades_secundarias
Info(_atividade_secundaria.text+CR+_atividade_secundaria.code)
END
FOR EACH _dados_qsa OF _estrutura_dados_cnpj.qsa
Info(_dados_qsa.qual+CR+_dados_qsa.nome)
END
Info(_estrutura_dados_cnpj.nome+CR+...
_estrutura_dados_cnpj.data_situacao+CR+...
_estrutura_dados_cnpj.complemento+CR+...
_estrutura_dados_cnpj.nome+CR+...
_estrutura_dados_cnpj.uf+CR+...
_estrutura_dados_cnpj.telefone+CR+...
_estrutura_dados_cnpj.situacao+CR+...
_estrutura_dados_cnpj.bairro+CR+...
_estrutura_dados_cnpj.logradouro+CR+...
_estrutura_dados_cnpj.numero+CR+...
_estrutura_dados_cnpj.cep+CR+...
_estrutura_dados_cnpj.municipio+CR+...
_estrutura_dados_cnpj.abertura+CR+...
_estrutura_dados_cnpj.natureza_juridica+CR+...
_estrutura_dados_cnpj.cnpj+CR+...
_estrutura_dados_cnpj.ultima_atualizacao+CR+...
_estrutura_dados_cnpj.status+CR+...
_estrutura_dados_cnpj.tipo+CR+...
_estrutura_dados_cnpj.fantasia+CR+...
_estrutura_dados_cnpj.email+CR+...
_estrutura_dados_cnpj.efr+CR+...
_estrutura_dados_cnpj.capital_social)

// Blog com Video e Exemplo

http://windevdesenvolvimento.blogspot.com.br/2017/02/aula-1056-webservice-008-consumir.html

https://www.youtube.com/watch?v=F16h1Z3Lm-c

https://www.youtube.com/watch?v=aIdnH82ru_4


De matos
21 02 2017
Buscar Cep WebService
//Buscar Cep WebService

_url is string="http://correiosapi.apphb.com/cep/"+EDT_cep
solicitacao is a httpRequest //Inicia uma solicitacao HTTP em um Servidor.
resposta is a httpResponse // Recuperar a resposta do httprequest
solicitacao..URL=_url
solicitacao..Method=httpGet
resposta=RESTSend(solicitacao) // Envia uma solicitação e aguarda a resposta do servidor
IF resposta..StatusCode=200 THEN
ELSE
Info(resposta..StatusCode+CR+resposta..DescriptionStatusCode)
END
retorno is ANSI string=UTF8ToString(resposta..Content)
SAI_TextoJson=Utilitarios_matos_wdk.remove_acento_util_wdk(retorno)
// Estou colocando retorno no meu texto Json
_cep_ is Structure
cep is string
tipoDeLogradouro is string
logradouro is string
bairro is string
cidade is string
estado is string
END
//Criando uma Estrutura Cep
Estrutura_json is _cep_
Deserialize(Estrutura_json,SAI_TextoJson,psdJSON)
EDT_rua=Estrutura_json.logradouro
EDT_bairro=Estrutura_json.bairro
EDT_Cidade=Estrutura_json.cidade
EDT_Estado=Estrutura_json.estado
EDT_TipodeLogradouro=Estrutura_json.tipoDeLogradouro

//{"cep":"93410130","tipoDeLogradouro":"Rua","logradouro":"Paraíba",
//"bairro":"Pátria Nova","cidade":"Novo Hamburgo","estado":"RS"}
//200: solicitacao processada com êxito
//301: documento movido permanentemente
//302: Documento mudou temporariamente
//403: O servidor entendeu o pedido, mas recusa-se a executá-lo.
//404: não encontrado
//500: erro interno do servidor
//503: Serviço temporariamente indisponível ou manutenção

// Blog com Video E Exemplo

http://windevdesenvolvimento.blogspot.com.br/2017/02/aula-1058-windev-webservice-010-buscar.html

https://www.youtube.com/watch?v=eOnNOAHIBa4
De matos
21 02 2017
Additional links
http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/546-webdev-webservice-funcoes-internas-para-auxilizar-criacao-xml/read.awp

http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/443-was-webdev-aplicativo-server-494/read.awp
BOLLER ADRIANO
17 06 2016