DÚVIDA RETORNO API/JSON

FUTURA 17/07/2023 17:21:04
#501589
Pessoal, estou fazendo login em uma API e em caso de login inválido, retorna no json apenas 2 campos :
success:1
logout:1
caso contrário todos os demais campos, minha dúvida, como faço pra testar se o login falhou através de "logout:1", uma vez que o status code retorna 200 mesmo nesta situação ?
FUTURA 17/07/2023 19:20:49
#501590
Alterado em 17/07/2023 19:21:45 Vou postar o código com restsharp, esta em vb.net, estou fazendo o login e pegando o cookie, mas no segundo bloco que faço o upload, da erro de login, mas estou passando o cookie conforme solicitado, os dados são do ambiente de testes, se alguém quiser testar, pode usar que vai logar, upload pode ser qq arquivo.

Dim client = New RestClient("https://apis.averbeporto.com.br/php/conn.php")
Dim request = New RestRequest()
request.Method = Method.POST
request.AddHeader("Content-Type", "application/x-www-form-urlencoded")
request.AddParameter("mod", "login")
request.AddParameter("comp", "5")
request.AddParameter("user", "00000001000136")
request.AddParameter("pass", "0000")
Dim response = client.Execute(request)
Dim Ncookie As String = response.Cookies(0).Name
Dim Vcookie As String = response.Cookies(0).Value.ToString
If Ncookie <> "portal[ses]" Then
MsgBox("Login Inválido, Verifique")
Exit Sub
End If

'Upload
request = New RestRequest()
request.Method = Method.POST
request.AddHeader("Content-Type", "multipart/form-data")
request.AddParameter("comp", "5")
request.AddParameter("mod", "upload")
request.AddParameter("path", "eguarda/php/")
request.AddParameter("recipient", "T")
'request.AddCookie(Ncookie, Vcookie)
request.AddParameter( "Cookie", Ncookie + "=" + Vcookie)
request.AddFile("fileData", "c:    este\NFe35230722918016000110550010000008471000213127.xml")
response = client.Execute(request)
NILSONTRES 17/07/2023 20:37:01
#501591
Você não consegue adicionar uma resposta, umas string caso registro não encontrado ?.
Se foi você mesmo criou a API com certeza.
FUTURA 17/07/2023 21:14:19
#501592
A api é da seguradora, é usada para averbação de seguros, mas ela não usa token, usa cookie, tem que fazer o login, pegar o cookie e depois passar ele no upload.
KERPLUNK 18/07/2023 15:48:28
#501593
Resposta escolhida
Bom, é uma dúvida conceitual. Status code é "que fim levou essa operação"? Se for 200, significa que o servidor recebeu e o pacote recebido é aceitável. O conteúdo da resposta é o que deve ser avaliado, no seu caso, basta desserializar esse conteúdo.
FUTURA 18/07/2023 18:38:01
#501594
Depois de alguns ajustes, conseguir fazer o login, receber o cookie para fazer o upload, estou recebendo o erro:
{"success":1,"S":{"P":0,"D":0,"R":1,"N":0},"prot":[],"error":{"msg":"Error opening ZIP","code":"01"}, é algo em relação ao formato do arquivo q estou enviando, no caso xml. Minha rotina esta em vb.net, fiz uma conversão e nessa linha abaixo, que esta em c# o que signifca a @ ?, pergunto, porque na conversão pra vb.net, essa @, acusa erro.

var responseBytes = oWeb.UploadFile(link, @"C:\Teste\XML0702794600019004-05-20188001.xml");
KERPLUNK 18/07/2023 19:09:17
#501595
Me parece que ele espera um arquivo ZIP...
A arroba, indica uma string literal. No VB.NET esse conceito só se aplicaria se sua string contivesse aspas duplas. Resumindo, pode simplesmente tirar.
KERPLUNK 18/07/2023 20:28:02
#501596
Fiz um exemplo pra você
FUTURA 19/07/2023 12:01:28
#501597
Deu certo o login e o upload, estou jogando a resposta ou retorno em um json para pegar o protocolo:

Dim JSON As JObject
JSON = JObject.Parse(resposta)
Dim iprot As String = Convert.ToString(JSON("prot"))

a variável fica com o seguinte formato [ "000000000000000000000000"].

Como pego o conteúdo numérico apenas ?, tem jeito de pegar direto ou é necessário fazer tratamento ?


KERPLUNK 19/07/2023 16:31:17
#501598
Te passei um exemplo completinho com a desserialização, porque não usar ele? Nele, os tipos já estão todos certos.
FUTURA 19/07/2023 17:17:18
#501599
Alterado em 19/07/2023 17:20:51 Porque o projeto todo esta em vb.net, essa averbação é só uma função de um projeto bem grande. Mas eu vou tentar aproveitar o que vc fez para uma migração que estou pretendendo fazer. Agradeço pela ajuda.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas