Conectar las llamadas GET / POST del servidor AWS de SIM5360

0

Tengo un módulo SIM5360, con una tarjeta Vodafone, y me gustaría conectarme a algunos servicios web para enviar y recibir datos en formato JSON, que he implementado en un servidor de AWS.

Para ejecutar los comandos AT, uso la herramienta Putty.

Intenté hacerlo primero usando funciones HTTP con las siguientes llamadas:

AT+CHTTPACT=”XX.XXX.XXX.169″, 8080<CR>

+CHTTPACT:REQUEST

GET /XXXDWP/rest/user/list HTTP/1.1<CR><LF>
Host: XX.XXX.XXX.169:8080<CR><LF>
Content-Type: application/json<CR><LF>
Accept: */*<CR><LF>
<CR><LF>
<CR><LF>
<SUB>

<Ctrl + Z>

Otros ejemplos:

GET /XXXDWP/rest/user/list HTTP/1.1\r\nHost: XX.XXX.XXX.169:8080\r\nAccept: */*\r\nContent-Type: application/json\r\n
GET /XXXDWP/rest/user/list HTTP/1.1 Host: XX.XXX.XXX.169:8080 Accept: */* Content-Type: application/json

Pero el resultado de mis llamadas es siempre:

+ CHTTPACT: 227

También intenté hacerlo usando las funciones TCP con las siguientes llamadas:

AT+NETOPEN

AT+CIPOPEN=0,”TCP”,”XX.XXX.XXX.169″,8080

AT+CIPSEND=0,
>GET /XXXDWP/rest/user/list HTTP/1.1<CR><LF>
Host: XX.XXX.XXX.169:8080<CR><LF>
Content-Type: application/json<CR><LF>
Accept: */*<CR><LF>
<CR><LF>
<CR><LF>
<SUB>

<Ctrl + Z>

Otros ejemplos:

>GET /XXXDWP/rest/user/list HTTP/1.1\r\nHost: XX.XXX.XXX.169:8080\r\nAccept: */*\r\nContent-Type: application/json\r\n
>GET /XXXDWP/rest/user/list HTTP/1.1 Host: XX.XXX.XXX.169:8080 Accept: */* Content-Type: application/json

Pero el resultado de mis llamadas es siempre:

……..
http/1.1 400 bad request
server: apache-coyote/1.1
transfer-encoding: chunked
……..

Si alguien pudiera darme una mano y darme los pasos a seguir para configurar correctamente el SIM5360 y poder realizar llamadas GET / POST al servidor.

    

1 respuesta

0

La siguiente secuencia se toma de la SIM5360 AT comando manual , capítulo 18.5 .

Asegúrate de que tienes una buena red revisándola desde

AT+COPS?

Ahora vamos a utilizar el Servicio seguro de protocolo de transferencia de hipertexto . Empieza enviando

AT+CHTTPSSTART

espera a OK , luego envía

AT+CHTTPSOPSE="<host>",<port>[,<server_type>]

y espere OK , luego envíe

AT+CHTTPSSEND=<len>[,<filename>]

len es la longitud de la solicitud en bytes y nombre de archivo es el nombre del archivo desde el que desea que se carguen los datos. Después de este comando, recibirá > , ahora envíe su solicitud GET

GET /xxxx.xxx
Host: xxx.xxxx.xxx    
User-Agent: curl/x.xx.x    
Content-Length: x

Una vez que su solicitud coincida con la longitud especificada, SIM5360 enviará sus datos y los devolverá

OK
+CHTTPS: RECV EVENT

lo que indica que el servidor respondió. Puedes leer la respuesta dando el comando:

AT+CHTTPSRECV=<len>

El interlocutor puede cerrarse automáticamente dependiendo del servidor, pero si desea cerrarlo manualmente, envíe

AT+CHTTPSCLSE

y recibirás

+CHTTPSNOTIFY: PEER CLOSED
OK

En este punto, dado que el servicio HTTP seguro todavía se está ejecutando, puede enviar otra solicitud GET desde el comando AT+CHTTPSOPSE . Pero si desea detener el servicio, puede enviar

AT+CHTTPSSTOP

y SIM5360 responderán correspondientemente OK en caso de éxito.

Utilicé el servidor api.thingspeak.com para la solicitud GET y el servidor respondió como se esperaba con "1". En mi caso, la URL para la solicitud GET es api.thingspeak.com/update?api_key=xxxxxxxxxxxxxxxxx&field1=xx

A continuación se copia de mi terminal:

AT+CHTTPSOPSE="api.thingspeak.com",80,1
OK

AT+CHTTPSSEND=122
>GET /update?api_key=xxxxxxxxxxxxxxxxx&field1=xx
Host: api.thingspeak.com
User-Agent: curl/7.45.0
Content-Length: 0    
OK
+CHTTPS: RECV EVENT
+CHTTPSNOTIFY: PEER CLOSED

AT+CHTTPSQECV=512
OK
+CHTTPSRECV: DATA,1
1
+CHTTPSRECV: 0

Espero que esto ayude.

    
respondido por el Nabeel Kirmani

Lea otras preguntas en las etiquetas