You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "CRUL_server_call_httpserver.h"
#include "dfl_custom.h"
#include "util.h"
#include <map>
#include <string>
#include <sstream>
#include <iostream>
//#define HTTP_HOST "localhost"
#define HTTP_POST 9293
size_t write_data(void* ptr, size_t size, size_t nmemb, void* stream) {
string data((const char*)ptr, (size_t)size * nmemb);
*((stringstream*)stream) << data << endl;
return size * nmemb;
}
string replace(string str, string s1, string s2) {
/*int pos;
pos = str.find(s1);
while (pos != -1) {
// str.length()求字符的长度注意str必须是string类型
str.replace(pos, string(s1).length(), s2);
pos = str.find(s1);
}*/
vector<string> vec;
Split(str, s1, vec);
string res = "";
for (int i = 0; i < vec.size(); i++) {
if (res.size() > 0) {
res.append(s2);
}
res.append(vec[i]);
}
return res;
}
string callHttpserver(string signinfoJsonString, string url) {
CURL* curl;
CURLcode res;
curl = curl_easy_init();
std::stringstream out;
if (curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "http");
struct curl_slist* headers = NULL;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char* data = signinfoJsonString.c_str();
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if (res != 0) {
string errMessage = curl_easy_strerror(res);
}
printf("返回值:%d\n", res);
}
string str_json = out.str();
curl_easy_cleanup(curl);
printf("str_json===>%s\n", str_json.c_str());
return str_json;
}
string callFsHttpserver(string signinfoJsonString, string url) {
CURL* curl;
CURLcode res;
curl = curl_easy_init();
std::stringstream out;
if (curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
struct curl_slist* headers = NULL;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char* data = signinfoJsonString.c_str();
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if (res != 0) {
string errMessage = curl_easy_strerror(res);
}
printf("返回值:%d\n", res);
}
string str_json = out.str();
curl_easy_cleanup(curl);
printf("str_json===>%s\n", str_json.c_str());
return str_json;
}
//gfpoapp正式 192.168.0.184 gfpot01测试
string callHttpserver2(string signinfoJsonString, char* url) {
CURL* curl;
CURLcode res;
std::stringstream out;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
//curl_easy_setopt(curl, CURLOPT_URL, "http://gfpot01:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_CHINT_ELECTRIC&receiverParty=&receiverService=&interface=SIO_BOM_PLM_ASYN&interfaceNamespace=urn%3Achintelectric.com%3Axi%3Aplm");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
string key = "Authorization: Basic ";
if (tc_strstr(url, "10.10.101.219") == NULL && tc_strstr(url, "gfpoapp") == NULL) {
key.append("cG9fcmZjOjFxYXohUUFa");
}
else {
key.append("c2hwbG06c2FwQDIwMTk=");
}
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/xml"); //cG9fcmZjOjFxYXohUUFa测试
headers = curl_slist_append(headers, key.c_str()); //c2hwbG06c2FwQDIwMTk=正式
headers = curl_slist_append(headers, "Cookie: JSESSIONID=-E6lQ1chbNdpncO4u4bcyWTq975hjwH2lQQB_SAPqDb0iHxoW4xB8Tlcn2TAho7J; JSESSIONMARKID=5HZ08QQuXWa7hQoZajm-ZJRySpCVLLwytn1_aVBAE; MYSAPSSO2=AjExMDAgAA1wb3J0YWw6cG9fcmZjiAAHZGVmYXVsdAEABlBPX1JGQwIAAzAwMAMAA1BJVAQADDIwMjQwNTEwMDkwNAUABAAAAAgKAAZQT19SRkP%2FAQQwggEABgkqhkiG9w0BBwKggfIwge8CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGBzzCBzAIBATAiMB0xDDAKBgNVBAMTA1BJVDENMAsGA1UECxMESjJFRQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwNTEwMDkwNDE2WjAjBgkqhkiG9w0BCQQxFgQUuzRiZLjaMRv5dYl%2FRB9b2rsfWyQwCQYHKoZIzjgEAwQuMCwCFE6u4YZRTlITKJx2!2UzEsO7e1QkAhRTF5kPjf4ueRx7Qt!JrN%2FZ0iWS1A%3D%3D; saplb_*=(J2EE17077720)17077750");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
//string xmlStr = replace(signinfoJsonString, "\"", "\\\"");
//xmlStr = replace(xmlStr, "\r", "");
//xmlStr = replace(xmlStr, "\n", "");
const char* data = G2U(signinfoJsonString.c_str());
printf("xmlStr==> %s\n", data);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
res = curl_easy_perform(curl);
if (res != 0) {
string errMessage = curl_easy_strerror(res);
}
printf("返回值:%d\n", res);
}
string str_json = out.str();
curl_easy_cleanup(curl);
printf("str_json===>%s\n", str_json.c_str());
return str_json;
}
string callHttpGet(string url) {
void* curl = curl_easy_init();
// 设置URL
std::stringstream out;
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
// 设置接收数据的处理函数和存放变量
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);
// 执行HTTP GET操作
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
// 接受数据存放在out中输出之
//cout << out.str() << endl;
string str_json = out.str();
curl_easy_cleanup(curl);
printf("str_json===>%s\n", str_json.c_str());
return str_json;
}