SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Português/Portuguese (https://forum.sa-mp.com/forumdisplay.php?f=34)
-   -   [Ajuda] GM conectar com API node (https://forum.sa-mp.com/showthread.php?t=669616)

binnyl 26/09/2019 04:10 AM

GM conectar com API node
 
Como enviar um JSON

Code:

{
"houseid": 10
}

pra essa parte da minha API node
Code:

  async robhouse(req, res) {
    const { houseid } = req.body;
    console.log("house robbing id: " + houseid);
    return res.json(houseid);
  }

No meu GM do SAMP?

Code:

HTTP(playerid, HTTP_POST, "localhost:3333/robhouse", "", "HttpResponse");

ipsLuan 27/09/2019 02:44 PM

Re: GM conectar com API node
 
Você quer getar as informações da página?

Naine 27/09/2019 03:45 PM

Re: GM conectar com API node
 
Quote:

Originally Posted by binnyl (Post 4115090)
Como enviar um JSON

Code:

{
"houseid": 10
}

pra essa parte da minha API node
Code:

  async robhouse(req, res) {
    const { houseid } = req.body;
    console.log("house robbing id: " + houseid);
    return res.json(houseid);
  }

No meu GM do SAMP?

Code:

HTTP(playerid, HTTP_POST, "localhost:3333/robhouse", "", "HttpResponse");

ira ficar algo como:
Code:

HTTP(playerid, HTTP_POST, "localhost:3333/robhouse", "{\"houseid\": 123}", "HttpResponse");
Como nao ira ter o content-type = json no header da requisicao, provavelmente tu nao vai receber esses dados em um objeto dentro do corpo.
print os dados recebidos, veja como é recebido e iniciae o parse..

Quote:

Originally Posted by ipsLuan (Post 4115229)
Você quer getar as informações da página?

seguindo o raciocinio, postear

Eiss 28/09/2019 04:17 AM

Re: GM conectar com API node
 
Melhor alternativa é usar o plugin do Southclaws.
O uso do mesmo é bem simples.

https://github.com/Southclaws/pawn-requests

binnyl 28/09/2019 10:23 PM

Re: GM conectar com API node
 
Quote:

Originally Posted by Naine (Post 4115234)
ira ficar algo como:
Code:

HTTP(playerid, HTTP_POST, "localhost:3333/robhouse", "{\"houseid\": 123}", "HttpResponse");
Como nao ira ter o content-type = json no header da requisicao, provavelmente tu nao vai receber esses dados em um objeto dentro do corpo.
print os dados recebidos, veja como é recebido e iniciae o parse..


seguindo o raciocinio, postear

Não funcionou...

Code:

  async robbizz(req, res) {
    const { bizzid } = req.body;
    console.log("bizz robbing id: " + bizzid);
    return res.json(bizzid);
  }

testei no insmonia e funcionou de boa passando o json, já no GM...

Code:

                                // api
                                format(string, sizeof(string), "{\"bizzid\": %i}", bizzid);
                                HTTP(i, HTTP_POST, "localhost:3333/robbizz", string, "HttpResponse");


Code:

public HttpResponse(index, response_code, data[])
{
    // In this callback "index" would normally be called "playerid" ( if you didn't get it already :) )
    new buffer[128];
    if(response_code == 200) //Did the request succeed?
    {
        //Yes!
        format(buffer, sizeof(buffer), "The URL replied: %s", data);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
    else
    {
        //No!
        format(buffer, sizeof(buffer), "The request failed! The response code was: %d", response_code);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
}

No jogo printou:
The request failed! The response code was: 6

binnyl 28/09/2019 10:25 PM

Re: GM conectar com API node
 
Quote:

Originally Posted by Eiss (Post 4115288)
Melhor alternativa é usar o plugin do Southclaws.
O uso do mesmo é bem simples.

https://github.com/Southclaws/pawn-requests

Desculpa a burrice, mas eu não entendi como botar isso pra funcionar

sampctl package install Southclaws/pawn-requests

samp não tem um limite de plugins? já to usando 6...

não tem suporte oficial pra json?

Naine 29/09/2019 02:52 AM

Re: GM conectar com API node
 
Quote:

Originally Posted by binnyl (Post 4115384)
Não funcionou...

Code:

  async robbizz(req, res) {
    const { bizzid } = req.body;
    console.log("bizz robbing id: " + bizzid);
    return res.json(bizzid);
  }

testei no insmonia e funcionou de boa passando o json, já no GM...

Code:

                                // api
                                format(string, sizeof(string), "{\"bizzid\": %i}", bizzid);
                                HTTP(i, HTTP_POST, "localhost:3333/robbizz", string, "HttpResponse");


Code:

public HttpResponse(index, response_code, data[])
{
    // In this callback "index" would normally be called "playerid" ( if you didn't get it already :) )
    new buffer[128];
    if(response_code == 200) //Did the request succeed?
    {
        //Yes!
        format(buffer, sizeof(buffer), "The URL replied: %s", data);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
    else
    {
        //No!
        format(buffer, sizeof(buffer), "The request failed! The response code was: %d", response_code);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
}

No jogo printou:
The request failed! The response code was: 6

Tu precisa verificar no teu servidor HTTP (JS), o que você esta recebendo e modificar o teu script pra entender a requisição. Como eu disse, você nao esta enviado content-type json (https://developer.mozilla.org/pt-BR/...s/Content-Type), o teu servidor pode nao estar entendendo a requisição e nao realizar o parse, nesse caso o restante do teu codigo que espera um objeto nao ira funcionar.. print o corpo recebido e veja o que esta acontecendo.

de uma olhada sobre requisicoes do tipo post: https://developer.mozilla.org/pt-BR/...P/Methods/POST
veja sobre http codes: https://developer.mozilla.org/pt-BR/...eb/HTTP/Status (este é o codigo que voce ira receber em response_code, na callback HttpResponse)

binnyl 29/09/2019 10:54 AM

Re: GM conectar com API node
 
Quote:

Originally Posted by Naine (Post 4115398)
Tu precisa verificar no teu servidor HTTP (JS), o que você esta recebendo e modificar o teu script pra entender a requisição. Como eu disse, você nao esta enviado content-type json (https://developer.mozilla.org/pt-BR/...s/Content-Type), o teu servidor pode nao estar entendendo a requisição e nao realizar o parse, nesse caso o restante do teu codigo que espera um objeto nao ira funcionar.. print o corpo recebido e veja o que esta acontecendo.

de uma olhada sobre requisicoes do tipo post: https://developer.mozilla.org/pt-BR/...P/Methods/POST
veja sobre http codes: https://developer.mozilla.org/pt-BR/...eb/HTTP/Status (este é o codigo que voce ira receber em response_code, na callback HttpResponse)

O servidor tá funcionando:
https://ibb.co/ygSQWP0
Mandando o JSON pelo insomnia


Só da erro (The request failed! The response code was: 6) quando eu tento mandar pelo pawn
Code:

                                // api
                                format(string, sizeof(string), "{\"bizzid\": %i}", bizzid);
                                HTTP(i, HTTP_POST, "localhost:3333/robbizz", string, "HttpResponse");


Eiss 29/09/2019 11:14 AM

Re: GM conectar com API node
 
Quote:

Originally Posted by binnyl (Post 4115424)
O servidor tá funcionando:
https://ibb.co/ygSQWP0
Mandando o JSON pelo insomnia


Só da erro (The request failed! The response code was: 6) quando eu tento mandar pelo pawn
Code:

                                // api
                                format(string, sizeof(string), "{\"bizzid\": %i}", bizzid);
                                HTTP(i, HTTP_POST, "localhost:3333/robbizz", string, "HttpResponse");



Seu script e a requisição aparenta está certo.

Tenta verificar as configurações do seu firewall, proxy, anti-vírus, etc.
Se você for usuário de Windows e usar esses anti-vius ai da vida, verifica as permissões da web.
Abrss...

n0minal 29/09/2019 12:37 PM

Re: GM conectar com API node
 
Quote:

Originally Posted by binnyl (Post 4115385)
Desculpa a burrice, mas eu não entendi como botar isso pra funcionar

sampctl package install Southclaws/pawn-requests

samp não tem um limite de plugins? já to usando 6...

não tem suporte oficial pra json?

Não existe um limite para o número de plugins que você pode usar no SAMP.

Sampctl é um gerenciador de pacotes (plugins) feito para o SAMP, como se fosse um npm/yarn.

O HTTP padrão do SAMP não usa content type json em seus headers internos.

SAMP não tem suporte oficial a JSON, então já que na sua API você trafega JSON recomendo que instale o sampctl e se aprofunde no plug-in do southclaw, é a melhor opção.


All times are GMT. The time now is 12:45 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.