PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Problemas com as Funções HTTPSend() e HTTPSendForm(), utilizando o método httpDelete.
Problemas com as Funções HTTPSend() e HTTPSendForm(), utilizando o método httpDelete.
Iniciado por Vinicius Souza, dez., 04 2017 8:27 PM - 1 resposta
Publicado em dezembro, 04 2017 - 8:27 PM
Pessoal,

Estou tendo problemas com a minha aplicação desenvolvida em Windev 22 (Versão 01A220059p). Quando utilizo o método httpdelete com as funções HttpSend() ou RestSend() a aplicação envia para o WebService a mensagem sem o conteúdo (body):

Exemplo:

hEnviaRequest is httpRequest
hRecebeRequest is httpResponse
sEndPoint is string

sEndPoint = "127.0.0.1:1000/pos/v1/purchases/100"

vConteudo is Variant
vConteudo.storecode = "1"
vConteudo.devicecode = "22"
vConteudo.date = "2017-11-20"

hEnviaRequest..URL = sEndPoint
hEnviaRequest..Method = httpDelete
hEnviaRequest..ContentType = "application/json"
hEnviaRequest..Content = VariantToJSON(vConteudo)

hRecebeRequest = HTTPSend(hEnviaRequest)

Segue a mensagem recebida no Webservice, enviada pelo código acima:

DELETE /pos/v1/purchases/100 HTTP/1.1
Host: 127.0.0.1:1000
User-Agent: Testes22
Accept: */*
Content-Type: application/json

Essa mensagem retorna o Erro "500 - Internal Server Error".

Utiliando o aplicativo POSTMAN, verifiquei que a função deveria envia desta maneira:

DELETE /pos/v1/purchases/100 HTTP/1.1
Host: 127.0.0.1:1000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
Content-Type: application/json
Accept: */*

{
"storecode" : "LOJA1",
"devicecode" : "22",
"date" : "2017-11-20"
}

A mensagem enviada pelo POSTMAN funciona perfeitamente.

Quando envio o utilizando a função HTTPSendForm(), ela coloca os campos em forma de parâmetros no EndPoint. Segue código abaixo:

DELETE /pos/v1/purchases/100?storecode=LOJA1&devicecode=22&date=2017%2D11%2D20T19%3A39%3A43%2E564Z HTTP/1.1
Host: 127.0.0.1:1000
User-Agent: Testes22
Accept: */*

Essa mensagem retorna o Erro "415 - Unsupported Media Type".

Alguém pode nos ajudar com este problema?

Atenciosamente.

Vinicius Souza
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em janeiro, 14 2021 - 12:03 AM
Solução

//Aqui define o layout do XML a ser enviado pelo POST

sXDoc is string = [





?

?
?
?


?
?
?
?
?
?

?
?
?



?
?
?
?
?
?
?
?
?


?


@LACRE@





]

//Exemplo de como substituir parte do XML inicial por variáveis

sLacre is string = "?"

sXDoc = Replace(sXDoc,"@LACRE@",sLacre)

//webservice
req is httpRequest

req.URL = "http://servidor.cliente.com.br:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_CONCEITTO_D&receiverParty=&receiverService=&interface=SI_AtualizaOrdemFrete_Out&interfaceNamespace=urn:enderecodocliente:TMAtualizaOrdemFrete"
req.User = "TESTE"
req.Password = "1234"
req.Header["SOAPAction"] = "Conceitto/Login"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
req.Method = httpPost
req.ContentType = "text/xml; charset=utf-8"

req.Content = sXDoc

cMyResponse is httpResponse = HTTPSend(req)

IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
sXDoc = cMyResponse..Content
Info(sXDoc)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/