Quectel bg96 Https Application Note v1-1
Quectel bg96 Https Application Note v1-1
Application Note
Version: 1.1
Date: 2025-01-02
Status: Released
LPWA Module Series
At Quectel, our aim is to provide timely and comprehensive services to our customers. If you
require any assistance, please contact our headquarters:
Legal Notices
We offer information as a service to you. The provided information is based on your requirements and we
make every effort to ensure its quality. You agree that you are responsible for using independent analysis
and evaluation in designing intended products, and we provide reference designs for illustrative purposes
only. Before using any hardware, software or service guided by this document, please read this notice
carefully. Even though we employ commercially reasonable efforts to provide the best possible
experience, you hereby acknowledge and agree that this document and related services hereunder are
provided to you on an “as available” basis. We may revise or restate this document from time to time at
our sole discretion without any prior notice to you.
Copyright
Our and third-party products hereunder may contain copyrighted material. Such copyrighted material
shall not be copied, reproduced, distributed, merged, published, translated, or modified without prior
written consent. We and the third party have exclusive rights over copyrighted material. No license shall
be granted or conveyed under any patents, copyrights, trademarks, or service mark rights. To avoid
ambiguities, purchasing in any form cannot be deemed as granting a license other than the normal
non-exclusive, royalty-free license to use the material. We reserve the right to take legal action for
noncompliance with abovementioned requirements, unauthorized use, or other illegal or malicious use of
the material.
BG96_HTTP(S)_Application_Note 1 / 36
LPWA Module Series
Trademarks
Except as otherwise set forth herein, nothing in this document shall be construed as conferring any rights
to use any trademark, trade name or name, abbreviation, or counterfeit product thereof owned by Quectel
or any third party in advertising, publicity, or other aspects.
Third-Party Rights
This document may refer to hardware, software and/or documentation owned by one or more third parties
(“third-party materials”). Use of such third-party materials shall be governed by all restrictions and
obligations applicable thereto.
We make no warranty or representation, either express or implied, regarding the third-party materials,
including but not limited to any implied or statutory, warranties of merchantability or fitness for a particular
purpose, quiet enjoyment, system integration, information accuracy, and non-infringement of any
third-party intellectual property rights with regard to the licensed technology or use thereof. Nothing herein
constitutes a representation or warranty by us to either develop, enhance, modify, distribute, market, sell,
offer for sale, or otherwise maintain production of any our products or any other hardware, software,
device, tool, information, or product. We moreover disclaim any and all warranties arising from the course
of dealing or usage of trade.
Privacy Policy
To implement module functionality, certain device data are uploaded to Quectel’s or third-party’s servers,
including carriers, chipset suppliers or customer-designated servers. Quectel, strictly abiding by the
relevant laws and regulations, shall retain, use, disclose or otherwise process relevant data for the
purpose of performing the service only or as permitted by applicable laws. Before data interaction with
third parties, please be informed of their privacy and data security policy.
Disclaimer
a) We acknowledge no liability for any injury or damage arising from the reliance upon the information.
b) We shall bear no liability resulting from any inaccuracies or omissions, or from the use of the
information contained herein.
c) While we have made every effort to ensure that the functions and features under development are
free from errors, it is possible that they could contain errors, inaccuracies, and omissions. Unless
otherwise provided by valid agreement, we make no warranties of any kind, either implied or express,
and exclude all liability for any loss or damage suffered in connection with the use of features and
functions under development, to the maximum extent permitted by law, regardless of whether such
loss or damage may have been foreseeable.
d) We are not responsible for the accessibility, safety, accuracy, availability, legality, or completeness of
information, advertising, commercial offers, products, services, and materials on third-party websites
and third-party resources.
Copyright © Quectel Wireless Solutions Co., Ltd. 2025. All rights reserved.
BG96_HTTP(S)_Application_Note 2 / 36
LPWA Module Series
Revision History
Version Date Author Description
Sherlock ZHAO/
- 2017-11-23 Parker ZHOU/ Creation of the document
Ethan YAN
Sherlock ZHAO/
1.0 2017-11-23 Parker ZHOU/ First official release
Ethan YAN
1. Updated the document name.
2. Added the introduction of AT command and the
declaration of AT command examples
1.1 2025-01-02 Terrence YANG (Chapter 2.1, 2.2).
3. Updated URL and IP addresses in examples
(Chapter 1.2.1, 3.1.1, [Link], [Link], 3.2.1, [Link],
[Link]).
BG96_HTTP(S)_Application_Note 3 / 36
LPWA Module Series
Contents
1 Introduction .......................................................................................................................................... 7
1.1. The Process of Using HTTP(S) AT Commands ...................................................................... 7
1.2. Description of HTTP(S) Header .............................................................................................. 8
1.2.1. Customize HTTP(S) Request Header ............................................................................. 8
1.2.2. Output HTTP(S) Response Header ................................................................................. 8
1.3. Description of Data Mode ........................................................................................................ 9
3 Examples ............................................................................................................................................ 21
3.1. Access to HTTP Server ......................................................................................................... 21
3.1.1. Send HTTP GET Request and Read the Response ..................................................... 21
3.1.2. Send HTTP POST Request and Read the Response ................................................... 22
[Link]. Post Body Obtained from UART/USB .................................................................. 22
[Link]. Post Body Obtained from File System ................................................................. 23
3.2. Access to HTTPS Server ...................................................................................................... 24
3.2.1. Send HTTPS GET Request and Read the Response ................................................... 24
3.2.2. Send HTTPS POST Request and Read the Response ................................................ 26
[Link]. Post Body Obtained from UART/USB .................................................................. 26
[Link]. Post Body Obtained from File System ................................................................. 28
BG96_HTTP(S)_Application_Note 4 / 36
LPWA Module Series
BG96_HTTP(S)_Application_Note 5 / 36
LPWA Module Series
Table Index
BG96_HTTP(S)_Application_Note 6 / 36
LPWA Module Series
1 Introduction
BG96 provides HTTP(S) application to HTTP(S) server. This document is a reference guide to all the AT
commands defined for HTTP(S).
Through BG96 TCP/IP AT commands, customers can configure a PDP context, activate/deactivate the
PDP context and query the PDP context status. And through BG96 HTTP(S) AT commands, customers
can send HTTP(S) GET/POST requests to HTTP(S) server, and read HTTP(S) response from HTTP(S)
server. The general process is as follows:
Step 1: Configure <APN>, <username>, <password> and other parameters of a PDP context by
AT+QICSGP. Please refer to document [1] for details. If QoS settings need to be updated,
configure them by AT+CGQMIN, AT+CGEQMIN, AT+CGQREQ and AT+CGEQREQ commands.
For more details, please refer to document [2].
Step 2: Activate the PDP context by AT+QIACT, then the assigned IP address can be queried by
AT+QIACT?. Please refer to document [1] for details.
Step 3: Configure the PDP context ID and SSL context ID by AT+QHTTPCFG command.
Step 4: Configure SSL context parameters by AT+QSSLCFG command. For more details, please refer
to document [3].
Step 6: Send HTTP(S) request. AT+QHTTPGET command can be used for sending HTTP(S) GET
request, and AT+QHTTPPOST or QHTTPOSTFILE command can be used for sending HTTP(S)
POST request.
Step 8: Deactivate the PDP context by AT+QIDEACT command. For more details, please refer to
document [1] .
BG96_HTTP(S)_Application_Note 7 / 36
LPWA Module Series
HTTP(S) request header is filled by the module automatically. HTTP(S) request header can be
customized by configuring <request_header> as 1 via AT+QHTTPCFG command, and then inputting
HTTP(S) request header according to the following requirements:
HTTP(S) response header will not be outputted automatically. HTTP(S) response header information can
be obtained by configuring <response header> to 1 via AT+QHTTPCFG command, and then HTTP(S)
response header will be outputted with HTTP(S) response body after executing AT+QHTTPREAD or
AT+QHTTPREADFILE command.
BG96_HTTP(S)_Application_Note 8 / 36
LPWA Module Series
The COM port of BG96 module has two working modes: AT command mode and data mode. In AT
command mode, the inputted data via COM port will be treated as AT command. While in data mode, it
will be treated as data.
Inputting “+++” or pulling up DTR (AT&D1 should be set first) can make the COM port exit from data mode.
To prevent the “+++” from being misinterpreted as data, the following sequence should be followed:
1) Do not input any character within 1s or longer before inputting “+++”.
2) Input “+++” within 1s, and no other characters can be inputted during the time.
3) Do not input any character within 1s after “+++” has been inputted.
When AT+QHTTPURL, AT+QHTTPOST and AT+QHTTPREAD are executed, the COM port will enter
data mode. If customers are using “+++” or DTR to make the port exit from data mode, the executing
procedure of these commands will be interrupted before the response is returned. In such case, the COM
port cannot reenter data mode by executing ATO command.
BG96_HTTP(S)_Application_Note 9 / 36
LPWA Module Series
2.1.1. Definitions
The AT or at prefix must be added at the beginning of each command line. Entering <CR> will terminate a
command line. Commands are usually followed by a response that includes
<CR><LF><response><CR><LF>. Throughout this document, only the response <response> will be
presented, <CR><LF> are omitted intentionally.
BG96_HTTP(S)_Application_Note 10 / 36
LPWA Module Series
The AT command examples in this document are provided to help you familiarize with AT commands and
learn how to use them. The examples, however, should not be taken as Quectel’s recommendation or
suggestions about how you should design a program flow or what status you should set the module into.
Sometimes multiple examples may be provided for one AT command. However, this does not mean that
there exists a correlation among these examples and that they should be executed in a given sequence.
The URLs, domain names, IP addresses, usernames/accounts, and passwords (if any) in the AT
command examples are provided for illustrative and explanatory purposes only, and they should be
modified to reflect your actual usage and specific needs.
The command is used to configure the parameters for HTTP(S) server, including configuring a PDP
context ID, customizing HTTP(S) request header, outputting HTTP(S) response header and querying SSL
settings. If the Write Command only executes one parameter, it will query the current settings.
OK
Write Command Response
AT+QHTTPCFG="contextid"[,<contextI If <contextID> is not omitted:
D>] OK
Or
+CME ERROR: <err>
OK
Write Command Response
AT+QHTTPCFG="requestheader"[,<re If <request_header> is not omitted:
BG96_HTTP(S)_Application_Note 11 / 36
LPWA Module Series
quest_header>] OK
Or
+CME ERROR: <err>
OK
Write Command Response
AT+QHTTPCFG="responseheader"[,<r If <response_header> is not omitted:
esponse_header>] OK
Or
+CME ERROR: <err>
OK
Write Command Response
AT+QHTTPCFG="sslctxid"[,<sslctxID> If <sslctxID> is not omitted:
] OK
Or
+CME ERROR: <err>
OK
Read Command Response
AT+QHTTPCFG? +QHTTPCFG: "contextid",<contextID>
+QHTTPCFG: "requestheader",<request_header>
+QHTTPCFG: "responseheader",<response_header>
+QHTTPCFG: "sslctxid",<sslctxID>
+QHTTPCFG: "contenttype",<content_type>
OK
Parameter
<contextID> Numeric type. PDP context ID. The range is 1-16, and the default value is 1.
<request_header> Numeric type. Disable or enable to customize HTTP(S) request header.
0 Disable
BG96_HTTP(S)_Application_Note 12 / 36
LPWA Module Series
1 Enable
<response_header> Numeric type. Disable or enable to output HTTP(S) response header.
0 Disable
1 Enable
<sslctxID> Numeric type. SSL context ID used for HTTP(S). The range is 0-5, and the
default value is 1. Customers should configure the SSL parameters by
AT+QSSLCFG. For details, please refer to document [3].
<content_type> Numeric type. Data type of HTTP(S) body.
0 application/x-www-form-urlencoded
1 text/plain
2 application/octet-stream
3 multipart/form-data
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
URL must begin with “[Link] or “[Link] which indicates you will access to an HTTP or HTTPS server.
OK
Write Command Response
AT+QHTTPURL=<URL_length>[,<tim a) If the parameter format is correct, and it is not sending
eout>] HTTP(S)GET/POST requests at present:
CONNECT
BG96_HTTP(S)_Application_Note 13 / 36
LPWA Module Series
Parameter
<URL_length> Numeric type. The length of URL. The range is 1–700. Unit: byte.
<timeout> Numeric type. The maximum time for inputting URL. The range is 1–65535, and
the default value is 60. Unit: second.
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
After AT+HTTPGET Write Command has been sent, it is recommended to wait for a specific period of
time (refer to the maximum response time below) for "+QHTTPGET:
<err>[,<httprspcode>[,<content_length>]]" to be outputted after “OK” is reported.
OK
If <request_header> equals 0 (disable Response
to customize HTTP(S) request header) a) If the parameter format is correct and no other errors occur:
Write Command OK
AT+QHTTPGET[=<rsptime>]
When the module has received response from HTTP(S)
server, it will report the following URC:
+QHTTPGET: <err>[,<httprspcode>[,<content_length>]]
BG96_HTTP(S)_Application_Note 14 / 36
LPWA Module Series
Parameter
<rsptime> Numeric type. The range is 1–65535, and the default value is 60. Unit: second. It
is used to configure the timeout for the HTTP(S) GET response "+QHTTPGET:
<err>[,<httprspcode>,<content_length>]" to be outputted after "OK" is
returned.
<data_length> Numeric type. The length of HTTP(S) request information, including HTTP(S)
request header and HTTP(S) request body. The range is 1–2048. Unit: byte.
<input_time> Numeric type. The maximum time for inputting HTTP(S) request
information. The range is 1–65535, and the default value is 60. Unit: second.
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
<httprspcode> Please refer to Chapter 6.
<request_header> Please refer to Chapter 2.3.
<content_length> Numeric type. The length of HTTP(S) response body. Unit: byte.
BG96_HTTP(S)_Application_Note 15 / 36
LPWA Module Series
UART/USB
The command is used to send HTTP(S) POST request. According to the configured <request_header>
parameter in AT+QHTTPCFG="requestheader"[,<request_header>] command, the AT+HTTPPOST
Write Command has two different formats. If <request_header> is set to 0, post body should be inputted
via UART/USB port. If <request_header> is set to 1, then both post header and body should be inputted
via UART/USB port.
After AT+QHTTPPOST command has been sent, “CONNECT” may be outputted in 125s to indicate the
connection is successful. If it is not received during the time, " +CME ERROR: <err>" will be outputted.
It is recommended to wait for a specific period of time (refer to the maximum response time below) for
"+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]" to be outputted after "OK" is reported.
OK
If <request_header> equals 0 (disable Response
to customize HTTP(S) request header) a) If the parameter format is correct and HTTP(S) server is
Write Command connected successfully and HTTP(S) request header is sent
AT+QHTTPPOST=<data_length>[,<in completely, it will prompt you to input body:
put_time>,<rsptime>] CONNECT
BG96_HTTP(S)_Application_Note 16 / 36
LPWA Module Series
Parameter
<data_length> Numeric type. If <request_header> is 0, it indicates the length of post body,
and if <request_header> is 1, it indicates the length of HTTP(S) request
information, including HTTP(S) request header and HTTP(S) request body.
The range is 1–1024000. Unit: byte.
<input_time> Numeric type. The maximum time for inputting post body or HTTP(S) request
information. The range is 1-65535, and the default value is 60. Unit: second.
<rsptime> Numeric type. The range is 1–65535, and the default value is 60. Unit:
second. It is used to configure the timeout for the HTTP(S) POST response
"+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]" to be
outputted after "OK" is returned.
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
<httprspcode> Please refer to Chapter 6.
<request_header> Please refer to Chapter 2.3.
<content_length> Numeric type. The length of HTTP(S) response body. Unit: byte.
BG96_HTTP(S)_Application_Note 17 / 36
LPWA Module Series
File
The command can be used to send HTTP(S) POST request via file. According to the <request_header>
in AT+QHTTPCFG="requestheader"[,<request_header>] command, the file operated by
AT+HTTPPOSTFILE command has two different formats. If <request_header> is set to 0, the file in file
system will be post body. If <request_header> is set to 1, the file in file system will be post header and
body.
It is recommended to wait for a specific period of time (refer to the maximum response time below) for
"+QHTTPPOSTFILE: <err>[,<httprspcode>[,<content_length>]]" to be outputted after "OK" is
reported.
OK
Write Command Response
AT+QHTTPPOSTFILE=<file_name>[,< a) If parameter format is correct and HTTP(S) server is
rsptime>] connected successfully:
If <request_header> equals 1, the OK
specified file must contain HTTP(S)
request header information. When the module has received response from HTTP(S)
server, it will report the following URC:
+QHTTPPOSTFILE:
<err>[,<httprspcode>,<content_length>]
Parameter
<file_name> String type. File name. The max length of file name is 80 bytes.
<rsptime> Numeric type. The range is 1–65535, and the default value is 60. Unit:
BG96_HTTP(S)_Application_Note 18 / 36
LPWA Module Series
second. It is used to configure the timeout for the HTTP(S) POST response
"+QHTTPPOSTFILE: <err>[,<httprspcode>,<content_length>]" to be
outputted after "OK" is returned.
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
<httprspcode> Please refer to Chapter 6.
<request_header> Please refer to Chapter 2.3.
<content_length> Numeric type. The length of HTTP(S) response body.
UART/USB
After sending HTTP(S) GET/POST requests, customers can retrieve HTTP(S) response information
from HTTP(S) server via UART/USB port by AT+QHTTPREAD command. "+QHTTPGET: <err>[,<
httprspcode>[,<content_length>]]", "+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]"
or "+QHTTPPOSTFILE: <err>[,<httprspcode>,<content_length>]" information must be received
before executing AT+QHTTPREAD command.
OK
Write Command Response
AT+QHTTPREAD[=<wait_time>] a) If the parameter format is correct and read successfully:
CONNECT
<Output HTTP(S) response information>
OK
+QHTTPREAD: <err>
Parameter
<wait_time> Numeric type. The maximum interval time between receiving two packets of data.
The range is 1–65535, and the default value is 60. Unit: second.
BG96_HTTP(S)_Application_Note 19 / 36
LPWA Module Series
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
After sending HTTP(S) GET/POST requests, customers can retrieve HTTP(S) response information from
HTTP(S) server via file by AT+QHTTPREADFILE. And "+QHTTPGET:
<err>[,<httprspcode>[,<content_length>]]", "+QHTTPPOST:
<err>[,<httprspcode>[,<content_length>]]" or "+QHTTPPOSTFILE:
<err>[,<httprspcode>,<content_length>]" information must be received before executing
AT+QHTTPREADFILE command.
OK
Write Command Response
AT+QHTTPREADFILE=<file_name>[, a) If the parameter format is correct:
<wait_time>] OK
Parameter
<wait_time> Numeric type. The maximum interval time between receiving two packets of
data. The range is 1–65535, and the default value is 60. Unit: second.
<file_name> String type. File name. The max length of file name is 80 bytes.
<err> Integer type. The error code of the operation. Please refer to Chapter 5.
BG96_HTTP(S)_Application_Note 20 / 36
LPWA Module Series
3 Examples
The following examples show how to send HTTP GET request and enable output of HTTP response
header, as well as how to read HTTP GET response.
OK
AT+QHTTPURL=26,80 //Set the URL which will be accessed.
CONNECT
[Link] //Input URL whose length is 26 bytes. (This URL is only an
example. Please input the correct URL in practical test.)
OK
AT+QHTTPGET=80 //Send HTTP GET request and the maximum response time is
80s.
OK
BG96_HTTP(S)_Application_Note 21 / 36
LPWA Module Series
//Solution 1: Read HTTP response information and output it via UART port.
AT+QHTTPREAD=80 //Read HTTP response information and output it via UART.
The maximum time to wait for HTTP session to be closed is
80s.
CONNECT
HTTP/1.1 200 OK <CR><LF> //HTTP response header and body.
Content-Type: text/html<CR><LF>
Vary: Accept-Encoding<CR><LF>
X-Powered-By: shci_v1.03<CR><LF>
Server: nginx<CR><LF>
Date: Fri, 27 Dec 2013 02:21:43 GMT<CR><LF>
Last-Modified: Fri, 27 Dec 2013 02:20:01 GMT<CR><LF>
Expires: Fri, 27 Dec 2013 02:22:43 GMT<CR><LF>
Cache-Control: max-age=60<CR><LF>
Age: 1<CR><LF>
Content-Length: 547256<CR><LF>
X-Cache: HIT from [Link]<CR><LF>
<CR><LF>
<body>
OK
The following examples show how to send HTTP POST request and retrieve post body via UART port, as
well as how to read HTTP POST response.
BG96_HTTP(S)_Application_Note 22 / 36
LPWA Module Series
OK
AT+QIACT=1 //Activate context 1.
OK //Activated successfully.
AT+QIACT? //Query the state of context.
+QIACT: 1,1,1,"[Link]"
OK
AT+QHTTPURL=60,80 //Set the URL which will be accessed.
CONNECT
[Link] //Input URL whose length is 60
bytes. (This URL is only an
example. Please input the
correct URL in practical test.)
OK
AT+QHTTPPOST=20,80,80 //Send HTTP POST request. POST body is obtained via UART.
The maximum input body time is 80s and the maximum
response time is 80s.
CONNECT
Message=HelloQuectel //Input post body whose length is 20 bytes. (The post body is
only an example. Please input the correct post body in
practical test.)
OK
The following examples show how to send HTTP POST request and retrieve post body via file system, as
well as how to store HTTP POST response to file system.
BG96_HTTP(S)_Application_Note 23 / 36
LPWA Module Series
OK
AT+QICSGP=1,1, "UNINET","","",1 //Configure PDP context 1. APN is “UNINET” for China Unicom.
OK
AT+QIACT=1 //Activate context 1.
OK //Activated successfully.
AT+QIACT? //Query the state of context.
+QIACT: 1,1,1,"[Link]"
OK
AT+QHTTPURL=60,80 //Set the URL which will be accessed.
CONNECT
[Link] //Input URL whose length is 60
bytes. (This URL is only an
example. Please input the
correct URL in practical test.)
OK
//POST request information from UFS file, and read HTTP response information and store it to UFS file.
AT+QHTTPPOSTFILE="[Link]",80 //Send HTTP POST request. POST body is obtained from
“[Link]”, and the maximum response time is 80s.
OK
+QHTTPPOSTFILE: 0,200,177 //After HTTP POST request is sent successfully, you can
execute AT+QHTTPREAD command.
AT+QHTTPREADFILE="[Link]",80 //Read HTTP response body and store it to “[Link]”, the
maximum time to wait for HTTP session to close is 80s.
OK
The following examples show how to send HTTPS GET request and enable output of HTTPS response
header, as well as how to read HTTPS GET response.
BG96_HTTP(S)_Application_Note 24 / 36
LPWA Module Series
OK
AT+QICSGP=1,1, "UNINET","","",1 //Configure PDP context 1. APN is “UNINET” for China Unicom.
OK
AT+QIACT=1 //Activate context 1.
OK //Activated successfully.
AT+QIACT? //Query the state of context.
+QIACT: 1,1,1,"[Link]"
OK
AT+QHTTPCFG="sslctxid",1 //Set SSL context ID.
OK
AT+QSSLCFG="sslversion",1,1 //Set SSL version as 1 which means TLSV1.0.
OK
AT+QSSLCFG="ciphersuite",1,0x0005 //Set SSL cipher suite as 0x0005 which means RC4-SHA.
OK
AT+QSSLCFG="seclevel",1,0 //Set SSL verify level as 0 which means you do not need any
CA certificate.
OK
AT+QHTTPURL=23,80 //Set the URL which will be accessed.
CONNECT
[Link] //Input URL whose length is 23 bytes. (This URL is only an
example. Please input the correct URL in practical test.)
OK
AT+QHTTPGET=80 //Send HTTPS GET request and the maximum response time
is 80s.
OK
BG96_HTTP(S)_Application_Note 25 / 36
LPWA Module Series
<body>
OK
The following examples show how to send HTTPS POST request and retrieve post body via UART port,
as well as how to read HTTPS POST response.
OK
AT+QHTTPCFG="sslctxid",1 //Set SSL context ID.
OK
AT+QSSLCFG="sslversion",1,1 //Set SSL version as 1 which means TLsV1.0.
OK
AT+QSSLCFG="ciphersuite",1,0x0005 //Set SSL cipher suite as 0x0005 which means RC4-SHA.
OK
AT+QSSLCFG="seclevel",1,2 //Set SSL verify level as 2 which means you should upload CA
certificate, client certificate and client private key by
AT+QFUPL command.
OK
AT+QSSLCFG="cacert",1, "[Link]"
BG96_HTTP(S)_Application_Note 26 / 36
LPWA Module Series
OK
AT+QSSLCFG="clientcert",1, "[Link]"
OK
AT+QSSLCFG="clientkey",1, "[Link]"
OK
AT+QHTTPURL=39,80 //Set the URL which will be accessed.
CONNECT
HTTPs://[Link]:8011/[Link] //Input URL whose length is 39 bytes. (This URL is only
an example. Please input the correct URL in
practical test.)
OK
AT+QHTTPPOST=48,80,80 //Send HTTPS POST request. POST body is obtained from UART.
The maximum input body time is 80s and the maximum
response time is 80s.
CONNECT
Message=1111&Appleqty=2222&Orangeqty=3333&find=1 //Input post body whose length is 48 bytes.
(This post body is only an example.
Please input the correct one in practical
test.)
OK
OK
BG96_HTTP(S)_Application_Note 27 / 36
LPWA Module Series
The following examples show how to send HTTPS POST request and retrieve post body from file system,
as well as how to store HTTPS POST response to file system.
OK
AT+QHTTPCFG="sslctxid",1 //Set SSL context ID.
OK
AT+QSSLCFG="sslversion",1,1 //Set SSL version as 1 which means TLsV1.0.
OK
AT+QSSLCFG="ciphersuite",1,0x0005 //Set SSL cipher suite as 0x0005 which means RC4-SHA.
OK
AT+QSSLCFG="seclevel",1,2 //Set SSL verify level as 2 which means you should upload CA
certificate, client certificate and client private key by
AT+QFUPL command.
OK
AT+QSSLCFG="cacert",1, "[Link]"
OK
AT+QSSLCFG="clientcert",1, "[Link]"
OK
AT+QSSLCFG="clientkey",1, "[Link]"
OK
AT+QHTTPURL=39,80 //Set the URL which will be accessed.
CONNECT
http 错误!超链接引用无效。 //Input URL whose length is 39 bytes. (This URL is only an example. Please
input the correct URL in practical test.)
OK
//POST request information from UFS file, and read HTTPS response information and store it to UFS file.
AT+QHTTPPOSTFILE="[Link]",80 //Send HTTPS POST request. POST body is obtained from
“[Link]”, and the maximum response time is 80s.
OK
+QHTTPPOSTFILE: 0,200,285 //After HTTPS POST request is sent successfully, you can
BG96_HTTP(S)_Application_Note 28 / 36
LPWA Module Series
BG96_HTTP(S)_Application_Note 29 / 36
LPWA Module Series
4 Error Handling
When executing HTTP(S) AT commands, if "ERROR" response is received from the module, please
check whether the (U)SIM card is inserted and whether it is "+CPIN: READY" returned when executing
AT+CPIN?.
If it is failed to active a PDP context by AT+QIACT command, please check the following configurations:
1. Query whether the PS domain is attached or not by AT+CGATT? command. If not, please execute
AT+CGATT=1 command to attach the PS domain.
2. Query the PS domain status by AT+CGREG? command and make sure the PS domain has been
registered.
3. Query the PDP context parameters by AT+QICSGP command and make sure the APN of specified
PDP context has been set.
4. Make sure the specified PDP context ID is neither used by PPP nor activated by AT+CGACT
command.
5 According to 3GPP specifications, the module only supports three PDP contexts activated
simultaneously, so customers must make sure the number of activated PDP contexts is less than 3.
If all above configurations are correct, but activating the PDP context by AT+QIACT command still fails,
please reboot the module to resolve this issue. After rebooting the module, please check the
configurations mentioned above at least three times and each time at an interval of 10 minutes to avoid
frequently rebooting the module.
BG96_HTTP(S)_Application_Note 30 / 36
LPWA Module Series
1. Make sure the URL inputted via AT+HTTPURL command is valid and can be accessed.
2. Make sure the specified server supports GET/POST commands.
3. Make sure the PDP context has been activated successfully.
If all above configurations are correct, but sending GET/POST requests by AT+QHTTPGET,
AT+QHTTPPOST and AT+QHTTPPOSTFILE commands still fails, please deactivate the PDP context by
AT+QIDEACT and re-activate the PDP context by AT+QIACT to resolve this issue. If activating the PDP
context fails, please refer to Chapter 4.2 to resolve it.
BG96_HTTP(S)_Application_Note 31 / 36
LPWA Module Series
"+QHTTPGET: <err>[,<httprspcode>[,<content_length>]]"/
"+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]"/
"+QHTTPPOSTFILE: <err>[,<httprspcode>,<content_length>]"
BG96_HTTP(S)_Application_Note 32 / 36
LPWA Module Series
<err> Meaning
0 Operation successful
BG96_HTTP(S)_Application_Note 33 / 36
LPWA Module Series
BG96_HTTP(S)_Application_Note 34 / 36
LPWA Module Series
<httprspcode> Meaning
200 OK
403 Forbidden
409 Conflict
BG96_HTTP(S)_Application_Note 35 / 36
LPWA Module Series
7 Appendix References
Document Name
[1] Quectel_BG96_TCP(IP)_Application_Note
[2] Quectel_BG96_AT_Commands_Manual
[3] Quectel_BG96_SSL_Application_Note
Abbreviation Description
BG96_HTTP(S)_Application_Note 36 / 36