一、新建C++文件
?
選擇All Classes,選擇父類BlueprintFunctionLibrary,命名為SendHttpRequest。
添加Http支持
代理回調的參數(shù)使用DECLARE_DYNAMIC_DELEGATE_TwoParam定義,第一參數(shù)是代理類型,后面是參數(shù)1類型,參數(shù)1,參數(shù)2類型,參數(shù)2。
代理通過UPROPERTY聲明
UFUNCTION的BlueprintCallable是定義一個帶有流程的節(jié)點
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SendHttpRequest.generated.h"
DECLARE_DYNAMIC_DELEGATE_TwoParams(FHttpResponseDelegate,bool,bSuccess,const TArray<FString>&,headers);
UCLASS()
class REDSTORY_API USendHttpRequest : public UBlueprintFunctionLibrary
{
GENERATED_BODY() public:
UPROPERTY()
FHttpResponseDelegate HttpResponseDelegate;
UFUNCTION(BlueprintCallable, Category = "Custom", meta = (Keywords = "SendHttpRequest"))
static void SendHttpRequest(FHttpResponseDelegate Callback);
// void Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded);
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "SendHttpRequest.h"
#include "HttpModule.h"
#include "Interfaces/IHttpResponse.h"
void USendHttpRequest::SendHttpRequest(FHttpResponseDelegate Callback)
{
FHttpModule* Http = &FHttpModule::Get();
TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request = Http->CreateRequest();
Request->SetURL("http://127.0.0.1:8888/a");
Request->SetVerb("POST");
Request->SetHeader("Content-Type", "application/json");
Request->SetHeader("User-Agent","X-UnrealEngine-Agent");
Request->SetContentAsString("{\"a\": 1,\"b\": \"2\",\"c\": \"3\",\"d\": \"4\"}");
// Request->OnProcessRequestComplete().BindUObject(this,&USendHttpRequest::Response);
Request->OnProcessRequestComplete().BindLambda([Callback](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
//UE_LOG(LogTemp,Display,TEXT("Response %s"),*Response->GetHeader("Set-Cookie"));
Callback.ExecuteIfBound(bWasSuccessful,Response->GetAllHeaders());
});
Request->ProcessRequest();
}
// void USendHttpRequest::Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded)
// {
//
// //UE_LOG(LogTemp,Display,TEXT("Response %s"),*HttpResponse->GetContentAsString());
// // UE_LOG(LogTemp,Display,TEXT("Response %s"),*HttpResponse->GetHeader("Set-Cookie"));
// // HttpResponseDelegate.Broadcast(bSucceeded);
// }
二、Blueprint
使用UE_LOG做測試還挺好用。
問題:no value will be returned by reference
數(shù)組作為代理的參數(shù)的寫法
DECLARE_DYNAMIC_DELEGATE_TwoParams(FHttpResponseDelegate,bool,bSuccess,const TArray<FString>&,headers);
問題:[Compiler] In use pin ?<Unnamed> ?no longer exists on node ?Send Http Request .?
刪除項目如下文件夾,然后鼠標右鍵點擊uproject文件,重新生成這些文件。文章來源:http://www.zghlxwxcb.cn/news/detail-758658.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-758658.html
到了這里,關于UE5 C++自定義Http節(jié)點獲得Header數(shù)據的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!