C++ 以POST方式向网页提交数据





#include  <iostream>

#include  <string>

#include <afxinet.h> //定义了MFC CInternetSession类等   

bool PostHttpPage(const std::string& hostName, const std::string& pathName, const std::string& postData) 



       using namespace std;   

      CInternetSession session("your app agent name");   

  try 

  

            INTERNET_PORT nPort = 80; 

            DWORD dwRet = 0;   

          CHttpConnection* pServer = session.GetHttpConnection(hostName.c_str(), nPort); 

               CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, pathName.c_str());   

               CString strHeaders = "Content-Type: application/x-www-form-urlencoded"; // 请求头   

            //开始发送请求   

          pFile->SendRequest(strHeaders,(LPVOID)postData.c_str(),postData.size()); 

             pFile->QueryInfoStatusCode(dwRet);     

             if (dwRet == HTTP_STATUS_OK) 

         

                    CString result, newline;   

                  while(pFile->ReadString(newline)) 

                    {

                              //循环读取每行内容 

                           result += newline+"\r\n"; 

                    }   

                 std::cout<<result<<std::endl;//显示返回内容 

                

            else 

         

                    return false; 

                

            delete pFile; 

                delete pServer;   

   

    catch (CInternetException* pEx) 

      

            //catch errors from WinInet 

          TCHAR pszError[200]; 

         pEx->GetErrorMessage(pszError, 200);   

              std::cout<<pszError<<std::endl;//显示异常信息 

              return false; 

        

    session.Close();   

  return true; 

}   

int main(void) 

{

   //向http://current.sinaapp.com/post.php发送数据

     PostHttpPage("current.sinaapp.com","post.php","name=rain&age=12"); 

}
#define BLINKER_WIFI #include #include #include // 硬件引脚定义(适配ESP-12F) #define RELAY_PIN D5 // 继电器控制引脚 #define LED_PIN D4 // 状态指示灯 #define BUTTON_PIN D3 // 物理按键(复用原清除配网按钮) // 创建WiFi配置对象 BGWiFiConfig wifipw; // 自定义配网页面HTML String html = String("<title>BGWiFiConfig</title>") + String("<form action="\"htmlresult\"" method="\"post\"">") + String("<br>WiFi名称:<br><input type="\"text\"" name="\"ssid\"">") + String("<br>WiFi密码:<br><input type="\"text\"" name="\"pwd\"">") + String("<br>auth:<br><input type="\"text\"" name="\"umsg1\"">") + String("<br>模式选择:<input type="\"radio\"" name="\"mode\"" value="\"1\"" checked="">mode:1") + String("&nbsp;&nbsp;<input type="\"radio\"" name="\"mode\"" value="\"2\"">mode:2 <br><br>") + String("<input type="\"submit\"" value="\"开始配网\""></form>") + String("<p>如果你点击提交,表单数据会被发送到htmlresult处理,setZDYhtmlret函数设置回调页面</p>") + String("<p>BGWiFiConfig接入Blinker示例代码Beta"); // 配网结果页面 String htmlret = String("htmlresult回调"); // Blinker组件 BlinkerButton Button1("btn-abc"); BlinkerNumber Number1("num-abc"); int counter = 0; // 状态变量 bool switchState = false; unsigned long buttonPressTime = 0; bool buttonPressed = false; // 按钮清除WiFi配置中断服务程序 ICACHE_RAM_ATTR void keyCwifi() { // 防抖动 static unsigned long last_interrupt_time = 0; unsigned long interrupt_time = millis(); if (interrupt_time - last_interrupt_time > 200) { wifipw.clearWiFi(); Serial.println("WiFi信息清除成功!"); } last_interrupt_time = interrupt_time; } // 继电器控制函数 void setRelay(bool state) { digitalWrite(RELAY_PIN, state); switchState = state; digitalWrite(LED_PIN, !state); // LED通常是低电平点亮 Button1.print(state ? "on" : "off"); } // 按钮回调函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); setRelay(!switchState); Blinker.vibrate(); } // 数据接收处理 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); counter++; Number1.print(counter); } // 初始化硬件 void setupHardware() { // 设置引脚模式 pinMode(RELAY_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); // 初始化状态 setRelay(false); // 初始化物理按键中断 attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), keyCwifi, CHANGE); } // 按键检测函数 void checkPhysicalButton() { if (digitalRead(BUTTON_PIN) == LOW) { if (!buttonPressed) { buttonPressTime = millis(); buttonPressed = true; } // 长按5秒重置配置 if (millis() - buttonPressTime > 5000) { wifipw.clearWiFi(); Serial.println("WiFi信息清除成功!"); // 重置后重启 ESP.restart(); } } else { if (buttonPressed) { // 短按切换开关状态 if (millis() - buttonPressTime < 1000) { setRelay(!switchState); } buttonPressed = false; } } } void setup() { Serial.begin(115200); // 初始化硬件 setupHardware(); // 初始化WiFi配置 wifipw.offConnectWiFi(true); wifipw.setZDYhtml(html); wifipw.setZDYhtmlret(htmlret); wifipw.setNumUMSG(1); wifipw.begin(); // 初始化Blinker if (wifipw.readWiFi(0) != "" && wifipw.readWiFi(0) != "NULL") { Serial.println(">>> blinker start <<<"); Blinker.begin(wifipw.readUMSG(1).c_str(), wifipw.readWiFi(0).c_str(), wifipw.readWiFi(1).c_str()); Blinker.attachData(dataRead); Button1.attach(button1_callback); } } void loop() { // WiFi配置循环 wifipw.Loop(); // 检测物理按键 checkPhysicalButton(); // Blinker循环 if (wifipw.readWiFi(0) != "" && wifipw.readWiFi(0) != "NULL") { Blinker.run(); } // 添加小延迟避免看门狗超时 delay(10); } 修正 头部文件匹配
最新发布
09-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值