jni开发: 怎么用c++代码实现这个请求并获得char的响应内容 curl -k -s --data-binary s sbody httpssrv0151asrcom8007asrsn_active2
要使用C++代码实现该请求并获取char*的响应内容,您可以使用libcurl库来发送HTTP请求并处理响应。以下是一个简单的示例代码:
#include <iostream>
#include <cstring>
#include <curl/curl.h>
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response) {
size_t totalSize = size * nmemb;
response->append(static_cast<char*>(contents), totalSize);
return totalSize;
}
char* makeRequest(const char* body, const char* url) {
CURL* curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
std::string response;
struct curl_slist* headers = NULL;
// 设置请求的URL和body
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);
// 忽略https证书验证
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
// 设置写入回调函数
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
// 发送请求
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
}
// 清理
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
// 将字符串复制到char*并返回
char* responseString = new char[response.length() + 1];
std::strcpy(responseString, response.c_str());
return responseString;
}
return nullptr;
}
int main() {
const char* body = "your_request_body_here";
const char* url = "https://srv01.51asr.com:8007/asrsn_active2";
char* response = makeRequest(body, url);
if (response) {
std::cout << "Response: " << response << std::endl;
delete[] response;
}
return 0;
}
在上面的代码中,makeRequest函数使用libcurl库发送HTTP POST请求,并将响应内容保存在response字符串中。然后,将该字符串复制到一个新的char*,并返回该char*。在main函数中,我们调用makeRequest函数来发送请求并打印响应内容。
请注意,为了使代码正常工作,您需要安装和链接libcurl库。具体的安装和链接方法可能因操作系统和开发环境而异
原文地址: http://www.cveoy.top/t/topic/iHbJ 著作权归作者所有。请勿转载和采集!