gSOAP是一個跨平臺的C/C++工具包,它允許使用XML和JSON進行通信。HTTP POST是一種用于將數據發送到Web服務器的常見方法。在此,我們將討論如何使用gSOAP在HTTP POST請求中發送JSON數據。
首先,我們需要創建一個包含JSON數據的結構體,并使用gSOAP的以下指令來定義它:
struct ns1__Data { char* name; int age; bool isMale; };
接下來,我們需要創建一個將結構體轉換為JSON格式的函數。
#include "json.hpp" std::string toJsonString(ns1__Data data) { nlohmann::json j; j["name"] = data.name; j["age"] = data.age; j["isMale"] = data.isMale; return j.dump(); }
接著,我們需要配置gSOAP以執行HTTP POST請求。創建一個連接,然后使用gSOAP指令調用請求。以下是一個例子:
#include "soapH.h" #include "DataBindingServiceSoap.nsmap" auto endpoint = "http://example.com"; auto action = "http://example.com/DataBindingService"; ns1__Data data; data.name = "John"; data.age = 30; data.isMale = true; soap *soap = soap_new(); soap_set_namespaces(soap, DataBindingServiceSoap_namespaces); soap_call_ns1__postData(soap, endpoint, action, toJsonString(data).c_str()); soap_destroy(soap); soap_end(soap); soap_free(soap);
最后,我們需要在Web服務器上創建接收POST請求的端點。以下是一個使用Node.js和Express.js框架的示例:
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; app.use(bodyParser.json()); app.post('/postData', (req, res) =>{ const data = req.body; console.log(data); res.send('OK'); }); app.listen(port, () =>{ console.log(`Example app listening at http://localhost:${port}`); });
在這個例子中,我們將從POST請求中獲取數據并在控制臺上記錄它。服務器將返回一個“OK”字符串作為成功響應。