energye / energy

Energy is a framework developed by Go language based on CEF (Chromium Embedded Framework) for developing cross-platform desktop applications for Windows, Mac OS X, and Linux

Home Page:https://energy.yanghy.cn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

怎么用CEF的窗口发送一个POST请求

reghtml opened this issue · comments

类似如下代码:
`#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&param2=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 中怎么发送呢,可以给个示例吗?

已解决,代码如下:

//发送请求
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万后,返回了正确的响应数据 , 我还是未登录状态,不知道是网站的问题还是其他的,我再研究下