Requisições com invokeURL

InvokeUrl é um cliente HTTP que permite  acessar e modificar:

  • recursos da web usando chamadas HTTP.
  • dados de um serviço Zoho de outro serviço Zoho usando a URL especificada em sua API
  • dados de um serviço de terceiros conectado ao seu serviço Zoho usando o URL especificado em sua API.

Observações:

  • Esta tarefa lançará um “erro de tempo limite de soquete” se o recurso da web / API demorar mais de 40 segundos para responder. 
  • No Zoho Creator, você pode baixar arquivos de tamanho de até 50 MB usando esta tarefa.
  • Em outros serviços além do Zoho Creator, você pode baixar arquivos de domínio Zoho de até  15 MB e outros arquivos de domínio de até 5 MB .

Sintaxe

response = invokeUrl
[ 
 url: <url_value> 
 type: [<type_value>] 
 headers: [<headers_value>] 
 content-type: [<content_type_value>] 
 parameters: [<parameters_value>] 
 files: [<files_value>] 
 connection: [<connection_name>] 
 detailed: [<detailed_value>] 
 response-format: [<response_format_value>] 
 response-decoding: [<encoding_format_value>] 
];

<response> A variável que conterá a resposta retornada.

<url_value> O URL da solicitação cujos recursos precisam ser acessados.

<type_value> Método de solicitação HTTP, os valores permitidos são:

  • GET (valor padrão)
  • POST
  • PUT
  • PATCH
  • DELETE

<headers_value> Os atributos ou os valores do cabeçalho.

<content_type_value>  O tipo de conteúdo que precisa ser enviado no corpo da solicitação HTTP.
Valores permitidos: qualquer tipo de conteúdo válido. Por exemplo, multipart / form-data, application / x-www-form-urlencoded, application / json, etc.

<parameters_value> O corpo da solicitação.

Envie vários tipos de corpo de solicitação usando invokeUrl:

  • Raw: os dados TEXT para este parâmetro serão enviados como tipo raw. 
  • x-www-form-urlencoded: os dados KEY-VALUE para este parâmetro serão enviados como tipo x-www-form-urlencoded . 
  • Dados do formulário: os dados do VALOR-CHAVE para este parâmetro serão enviados como tipo de dados do formulário multipartes, se o valor do   parâmetro do tipo de conteúdo for especificado como  dados do formulário / multipartes .

    Observação:

    • Se o valor do parâmetro content-type não for especificado como  multipart / form-data , os dados KEY-VALUE serão tratados como tipo  x-www-form-urlencoded  .
    • No  Zoho Creator , os valores multipart / form-data devem ser especificados no  parâmetro files 
  • Binário: os dados FILE são enviados como tipo binário.

    Observação:

    • O valor do  parâmetro <content-type> deve ser especificado como  application / octet-stream , para reconhecer que o corpo é enviado como tipo binário.
    • O tipo binário não é aplicável ao Zoho Creator.

<files_value>  No  Zoho Creator , se o corpo da solicitação precisa ser enviado como dados de formulário de várias partes, os valores precisam ser fornecidos a este parâmetro.

Observação:

  • Apenas os arquivos recebidos como resposta de uma tarefa invokeUrl podem ser anexados.
  • Este parâmetro também pode ser usado em outros serviços além do Zoho Creator. No entanto, para enviar dados de formulário multipartes de  serviços diferentes do Zoho Creator , recomendamos que você forneça os valores como VALOR-CHAVE para o  parâmetro body enquanto especifica o  parâmetro de tipo de conteúdo como  multipart / form-data .
  • função toFile pode ser usada aqui. Por exemplo, você pode pegar um valor de texto no formato csv e usar a função ‘toFile’ para passá-lo como um arquivo csv. Observe que esta função não é aplicável ao Zoho Creator.
  • No Zoho Creator, o texto de entrada que será convertido em arquivo não pode ter mais de 50 MB .

Formato para enviar dados KEY-VALUE,

  • Se o valor associado com a chave é FILE:
<variable> = { “paramName” : <key>, “content” : <File>};
  • Se o valor associado à chave for TEXT:
<variable> = { “paramName”: <key>, “content” : <Text>, “stringPart” : “true”};
 

Formato para enviar dados LIST of FILE:

<Arquivo1>. setParamName (<FileName1>);
<Arquivo2>. setParamName (<FileName2>);
list_of_files = List ();
List.add (<File1>);
List.add (<File2>);
 
A função interna setParamName  é usada para definir o nome especificado para o objeto de arquivo que precisa ser enviado em dados de formulário com várias partes usando invokeUrl. Esta função não pode ser aplicada em arquivos obtidos usando a tarefa de obtenção de registros ou a expressão input. <field_name>.
 

Formato para enviar dados LIST of TEXT:

list_of_text = List ();
List.add (<Text1>);
List.add (<Text2>);
 

Formato para enviar dados LIST of KEY-VALUE,

  • Se os valores das chaves forem FILES:
list_of_key_value = List ();
list_of_key_value.add ({” paramName “: <key1>, ” content “: <File1>});
list_of_key_value.add ({” paramName “: <key2>, ” content “: <File2>});
  • Se os valores das chaves forem do tipo de dados TEXT:
list_of_text = List ();
list_of_text.add ({” paramName “: <key1>, ” content “: <Text1>, ” stringPart “: “true”});
list_of_text.add ({” paramName “: <key2>, ” content “: <Text2>, ” stringPart “: “true”}); 
 
<connection_name> o nome da conexão do serviço necessário.
Observação: As conexões devem ser criadas anteriormente acessando Configurações > Conexões. Várias conexões podem ser criadas para o mesmo serviço. 
 
<detailed_value> Este parâmetro decide se uma resposta detalhada precisa ser retornada.

Valores permitidos: 

  • true – retorna o código de resposta (código de status HTTP), a resposta do cabeçalho e o conteúdo da resposta como VALOR-CHAVE.
  • false – retorna o conteúdo da resposta.

Valor padrão: falso

<response_format_value> Se este parâmetro for fornecido com o valor –  FILE , a resposta será convertida e retornada como um objeto FILE.

Valores permitidos: FILE

<encoding_format_value> O esquema de codificação de caracteres com o qual a resposta retornada precisa ser decodificado.

Valor padrão: UTF-8

O exemplo a seguir busca uma imagem da web usando seu URL:

				
					obtemImg = invokeurl
[
	url: "https://yt3.ggpht.com/ytc/AKedOLRn7y2EFXPcZB4Bndc0X38tS81O0O0v8iRgD0iu=s900-c-k-c0x00ffffff-no-rj"
	type: GET
];
				
			

<obtemImg> o arquivo que contém a imagem que será obtida da web. 

<https://yt3.ggpht.com/ytc/AKedOLRn7y2EFXPcZB4Bndc0X38tS81O0O0v8iRgD0iu=s900-c-k-c0x00ffffff-no-rj> o texto  que representa o URL da imagem que precisa ser buscada.

<GET> o método de solicitação HTTP.

O exemplo abaixo atualiza a imagem de registro do módulo Contatos no Zoho CRM

				
					// variável que vai obter a imagem
resp = invokeurl
[
	url :"https://pbs.twimg.com/profile_images/1011277014924496897/aTMLLVVZ_400x400.jpg"
	type :GET
];

// variável do tipo lista 
files = List();

// nome para o arquivo
resp.setParamName("file");

// adicionando a imagem obtida na lista
files.add(resp);

// variável que vai atualizar a imagem do contato
resp1 = invokeurl
[
	url :"https://www.zohoapis.com/crm/v2/Contacts/" + 4471297000012344001 + "/photo"
	type :POST
	files:files
	connection:"crm"
];
				
			

<resp> variável que vai obter a imagem da URL

<files> variável do tipo lista para armazenar a imagem

<setParamName> é usada para definir o nome especificado para o objeto de arquivo que precisa ser enviado em dados de formulário com várias partes usando invokeUrl.

<resp1> variável que vai inserir a imagem no Contato

<4471297000012344001> id do contato que vai ser atualizado no Zoho CRM

Parâmetros como x-www-form-urlencoded

O application/x-www-form-urlencoded tipo de conteúdo descreve os dados do formulário que são enviados em um único bloco no corpo da mensagem HTTP.

Este tipo de conteúdo é ineficiente para enviar grandes quantidades de dados binários ou texto contendo caracteres não ASCII e não permite o upload de arquivos. 

Na solicitação:

  • Separe cada parâmetro de seu valor com um símbolo de igual ( =).
  • Separe vários valores com uma vírgula ( ,).
  • Separe cada par de valor de parâmetro com um e comercial ( &).

Exemplo no Deluge

Criamos um map cabeçalho com parâmetros  do tipo de conteúdo solicitado, logo vamos chamar ele dentro da url no headers assim ele reconhece o tipo de conteúdo.

				
					// cabeçalho com tipo de conteudo
cabelcalho = Map();
cabelcalho.put("Content-Type", "application/x-www-form-urlencoded");
// mapa de funcionarios
funcionario = Map();
funcionario.put("First_Name", "Joao");
funcionario.put("Last_Name", "Alves");
funcionario.put("Phone", "+55 12 123456789");
// solicita coneção com parâmetros
resp = invokeurl
[
	url: "https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306"
	type: POST
	parameters: funcionario
	headers: cabelcalho
];
				
			

Usamos o Webhook para demonstrar a saída 

Parâmetros como form-data

No multipart/form-data content-type, o corpo da mensagem HTTP é dividido em partes, cada uma contendo uma seção distinta de dados.
Cada parte da mensagem requer um cabeçalho contendo informações sobre os dados da parte. Cada parte pode conter um tipo de conteúdo diferente, por exemplo, text/plain, image/png, image/gif, ou multipart/mixed.
Se um parâmetro especifica vários arquivos, você deve especificar o multipart/mixedtipo de conteúdo no cabeçalho da parte.
A codificação é opcional para cada parte da mensagem. O cabeçalho da parte da mensagem deve especificar qualquer codificação diferente da padrão.

Exemplo no Deluge:

				
					url = "https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306";
resp = invokeurl
[
	url :url
	type : POST
	headers:{"Content-Type":"multipart/form-data"}
];
				
			

Parâmetros como JSON

Podemos também usar JSON no invokeUrl assim passando o parâmetro toString no parameter, conforme código abaixo.
Passando esse parâmetro automaticamente ele reconhece que é um JSON

				
					/*PARÂMETROS COM JSON*/
// cria lista 
funcionarios = List();
// variável com atributos em lista
funcionario1 = {"nome":"Maria","sobrenome":"Silva","departamento":"TI"};
// adiciona variável na lista 
funcionarios.add(funcionario1);
// variável com atributos em lista
funcionario2 = {"nome":"Joao","sobrenome":"Silva","departamento":"RH"};
// adiciona variável na lista 
funcionarios.add(funcionario2);
funcionarioMap = map();
funcionarioMap.put("funcionarios",funcionarios);
// solicita conexão com parâmetros
resp = invokeurl
[
	url :"https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306"
	type :POST
	headers: {"Content-Type":"application/json"}
	parameters:funcionarioMap.toString()
];
				
			

QueryString

Na World Wide Web (www), uma query string (string de consulta) é uma parte de um localizador uniforme de recursos (URL) que atribui valores a parâmetros especificados. Uma query string (string de consulta) geralmente inclui campos adicionados a um URL base por um navegador da Web ou outro aplicativo cliente, por exemplo, como parte de um formulário HTML.

Um servidor da web pode manipular uma solicitação de protocolo de transferência de hipertexto (HTTP) lendo um arquivo de seu sistema de arquivos com base no caminho da URL ou manipulando a solicitação usando uma lógica específica para o tipo de recurso. Nos casos em que uma lógica especial é chamada, a query string (string de consulta) estará disponível para essa lógica para uso em seu processamento, junto com o componente de caminho da URL.

Seu uso é simples, após a URL de determinada página, adicionamos o primeiro valor usando a seguinte sintaxe: ?Chave=Valor. Para passarmos mais de um conjunto, os mesmos devem ser concatenados usando o caractere coringa &.

No mapa abaixo temos as chaves nome e sobrenome com os valores de Maria Silva que são usados na query string

				
					funcionario = Map();
funcionario.put("nome", "Maria");
funcionario.put("sobrenome", "Silva");
resp = invokeurl
[
	url :"https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306" 
	type : GET
	parameters: funcionario
	headers:{"Content-Type":"application/x-www-form-urlencoded"}
];
				
			

Exemplo:

url de requisição: 

url :”https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306″

string para busca:

querystring = “?departamento=TI&nome=Maria&sobrenome=Silva”

Juntando as duas temos uma query string, podemos obeservar que sempre depois dos ? (interrogação) começa a montagem de busca, e os & (and) são para separar os parâmetros de busca.

https://webhook.site/31d3945a-7e64-4b74-89a1-bb8d067e5306?departamento=TI&nome=Maria&sobrenome=Silva

Deixe um comentário