器件型号:CC3220
您好!
我正在尝试让 CC3220向 IFFFT 服务器发送帖子。
作为基础项目、我使用"配置"演示连接到互联网、使用"HttpGet "演示的一些代码向服务器发送帖子。
我必须包含"Provisioning"演示中使用的"HttpGet"演示库、以便可以使用"HttpClient"库。
我已连接到 INetrnet、我的 IFFFT 链接正常工作。
以下是我的代码:
#defineHOSTNAME"https://maker.ifttt.com" #define REQUEST_URI "/trigger/mytrigger/with/key/myKey #define USER_AGENT "HttpClient (ARM;TI-RTOS)" static Int32_t sendWaterEmailTest (void) {bremedDataFlag = false; Clientdata[HTTP_MIN_RECV]; int16_t HOSTNAME = 0; 如果 发送 Http_Handle = 0、则为 Http_Handle (http_http_min_rtt) ;Http_rtt Handle = 0;Http_Handle = 0;Http_Handle = 0;Http_Handle = 0;Http_Handle = 0;Http_Handle = 0;Http_Handle = 0;Http_Handle <Http_Handle = 0;Http_Handle 创建 http 客户端句柄失败\n\r\n、statusCode); } ret = HttpClient_setHeader (httpClientHandle、HttpClient_HFIELD_REQ_USER_AGENT、USER_AGENT、strlen (USER_AGENT)、HttpClient_setHeader (httpClient_ILD_PERSISTENT); if ( log_MESSAGE < 0){LOG_MESSAGE (http_REQ = 0、http_RETOP0)、HttpREQ = 0、HttpREQ 0、Httpendr (http_REQ);(如果 HttpRET_RETHET < 0、则为0、则为0、则为0); (http_CLIENT) 发送失败%i\n\r\n,ret); } if (ret != HTTP_SC_OK){log_message("httpTask: Cannot get status %i\n\r", ret); } log_message("HTTP Response Status Code:%d\n\r",&); Do { Do {=HttpClient\r},回应 数据(\datoreLog);\n\date&tre!\n\date!\n&tre&tre! len += ret; }while (moreDataFlag); log_message ("接收到%d 字节有效载荷\n\r"、len); ret = HttpClient_ddisconnect (httpClientHandle); if (ret<0) { log_message ("httpTask:disconnect failed\n"r); } HttpClient_destroy (httpret );(return)
这就是我在 UART 中得到的结果:
发送 HTTP POST 请求至'https://maker.ifttt.com'
httpTask:连接失败:-2006
httpTask:发送失败-3021
httpTask:无法获取状态-3021
HTTP 响应状态代码:-3021
接收到0字节的有效载荷
httpTask:断开连接失败
是否知道它无法连接以及为何无法发送帖子?
我在 Energia 中测试了一个与 IFFFT 和 CC3220配合使用的示例项目:
#ifndef __CC3200R1M1RGC__
#include
#endif
#include
//您的网络名称也称为 SSID
字符 SSID[]="mySSID";
//您的网络密码
字符密码[]="myPassword";
字符服务器[]="maker.ifttt.com";
//初始化以太网客户端库
//使用要
连接的服务器的 IP 地址和端口//(端口80是 HTTP 的默认值):
WiFiClient 客户端;
int 触发器=0;
void setup(){//
初始化串行端口并等待端口打开:
Serial.begin(115200);
//尝试连接到 Wifi 网络:
serial.print ("尝试连接到网络命名为:");
//打印网络名称(SSID);
serial.println (SSID);
//连接到 WPA/WPA2网络。 如果使用开放或 WEP 网络:
WiFi.begin(ssid,密码);
while (wif.status()!= wl_connected){
//在我们等待连接
Serial.print (".");
delay (300);
}
Serial.println ("\n 您已连接到网络");
Serial.println ("等待 IP 地址"),请更改此行;
while (wifi.localip()=INADDR_NONE){
//在等待 IP 地址
Serial.print ("。")时打印点;
delay (300);
}
Serial.println ("获得\nip 地址");
//我们已连接并具有 IP 地址。
//打印 WiFi 状态。
printWifiStatus();
//启用内部上拉。
*没有引脚的情况下将悬空、该示例将不起作用*/
pinMode (PUSH2、INPUT_PULLUP);
pinMode (1、OUTPUT);
//pinMode (2、OUTPUT);
digitalWrite (1、 高电平);
// digitalWrite (2、低电平);
attachInterrupt (PUSH2、sendRequest、 下降);//每当按下按钮
时就会触发中断 Serial.println ("按下按钮!");
}
void loop (){
String IFTTT_key = myIFFFTKey ";
String IFTTT_EVENT ="myIFFFTTTTTTTTrigger";// IFTTT Maker Event Name HERE
sensortrigger = analogRead (A3);String IFTTT
= myIFTFFTTRIGGER (A3)
="1000);sensort_1pritrn (alt =
1);sensort (1prit_t)= 1);senstrigger (alt (<1);sensitle.pritruptn)= 1);sensort_t
}
//*********
//此方法与服务器建立 HTTP 连接,并执行用户名的 GET 请求
//简单地传递标记 ID 以作为字符串进行查询。
//返回字符串:
//-返回" "如果标记 ID 已注册
//-如果标记 ID 未注册则返回"NULL"
//-如果 REST API 失败则返回"FAIL"
//
字符串 IFTTT_TRIGGER (字符串键、字符串事件){
字符串名称="";
//在发送新请求之前关闭任何连接。
//这将释放 WiFi shield
client.stop()上的套接字;
//如果连接成功:
if (client.connect (server、80)){
//这是可选的。 您可以将其他数据连同 HTTP POST 一起发送到 IFTTT,这些数据将触发操作
字符串 PostData =“{\"value1\":\"Michael Liesenberg \""、\"value2\":\"Hello\"、\"e3\":\"World!\"};
Serial.pritln ("已连接到服务器... 获取名称...");
//发送 HTTP PUT 请求:
字符串请求="POST /TRIGGER/";
请求+=
"/with/key;
请求+= KEY;
请求+=" HTTP/1.1";
Serial.printn (请求);
client.Energtln (请求);
client.println (请求);client.println ("主机:maker.ifttt.com");
client.println-1.1;User.printl1.1
client.println ("连接:关闭");
client.println ("内容类型:应用程序/json");
client.print ("内容长度:");
client.println (PostData.length ());
client.println ();
client.println (PostData);
client.println ();
}
否则{
//如果无法建立连接:
serial.println ("连接失败");
返回"失败";// REST API 失败...
}
//捕获服务器的响应。 (10秒超时)
长超时= 4000;
长 lastTime =毫秒();
while ((毫秒()-lastTime)<超时){//等待服务器的传入响应
while (client.available ()){//从服务器传入字符
c = client.read ();//读取字符
Serial.write (c);
}
Serial request.n
(完整
); //返回从服务器接收到的完整名称
return "SUCCERS";
}
void printWifiStatus(){
//打印您所连接网络的 SSID:
serial.print ("ssid:");
serial.println (WiFi.ssid ());
//打印 WiFi IP 地址:
ipaddress = WiFi.localIP ();serial.printn (wif.ssid
)
;//打印接收到的信号强度:
长 RSSI = WiFi.RSSI ();
Serial.print ("信号强度(RSSI):");
Serial.print (RSSI);
Serial.println (" dBm");
}
void sendRequest(){
if (trigger = 0){
trigger = 1;
}
谢谢、
Michael
