怎么用CEF的窗口发送一个POST请求
reghtml opened this issue · comments
reghtml commented
类似如下代码:
`#include "include/cef_app.h"
#include "include/cef_browser.h"
#include "include/cef_frame.h"
#include "include/cef_request.h"
void SendPostRequest(CefRefPtr browser) {
CefRefPtr frame = browser->GetMainFrame();
// 创建一个请求对象
CefRefPtr<CefRequest> request = CefRequest::Create();
request->SetURL("https://example.com/post_endpoint"); // 设置请求的URL
request->SetMethod("POST"); // 设置请求方法为POST
// 设置请求头
CefRequest::HeaderMap headerMap;
headerMap.insert(std::make_pair("Content-Type", "application/x-www-form-urlencoded"));
request->SetHeaderMap(headerMap);
// 设置请求体(示例数据)
std::string postData = "param1=value1¶m2=value2";
CefRefPtr<CefPostData> postDataPtr = CefPostData::Create();
CefRefPtr<CefPostDataElement> element = CefPostDataElement::Create();
element->SetToBytes(postData.size(), postData.c_str());
postDataPtr->AddElement(element);
request->SetPostData(postDataPtr);
// 加载请求
frame->LoadRequest(request);
}
`
在 energy 中怎么发送呢,可以给个示例吗?
reghtml commented
已解决,代码如下:
//发送请求
var request = cef.RequestRef.New()
request.SetURL(loginUrl)
request.SetMethod("POST")
request.SetHeaderByName("Content-Type", "application/json", true)
request.SetHeaderByName("Referer", thisUrl, true)
//post数据
var data = cef.PostDataRef.New()
var ele = cef.PostDataElementRef.New()
str := `{"username":"` + tab.user + `","password":"` + tab.pwd + `"}`
ele.SetToBytes([]byte(str))
//添加数据
data.AddElement(ele)
request.SetPostData(data)
chromium.Chromium().Browser().MainFrame().LoadRequest(request)
这样是已经 能正确发送POST请求了
但是我这边的站POST万后,返回了正确的响应数据 , 我还是未登录状态,不知道是网站的问题还是其他的,我再研究下