欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

UE5 C 自定义Http节点获得Header数据,数据结构节点的定义

墨初 知识笔记 136阅读

一、新建C文件

 

选择All Classes选择父类BlueprintFunctionLibrary命名为SendHttpRequest。

添加Http支持

代理回调的参数使用DECLARE_DYNAMIC_DELEGATE_TwoParam定义第一参数是代理类型后面是参数1类型参数1参数2类型参数2。

代理通过UPROPERTY声明

UFUNCTION的BlueprintCallable是定义一个带有流程的节点

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include CoreMinimal.h#include Kismet/BlueprintFunctionLibrary.h#include SendHttpRequest.generated.hDECLARE_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.hvoid USendHttpRequest::SendHttpRequest(FHttpResponseDelegate Callback){FHttpModule* Http  &FHttpModule::Get();TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request  Http->CreateRequest();Request->SetURL( 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

数组作为代理的参数的写法

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文件重新生成这些文件。

标签:
声明:无特别说明,转载请标明本文来源!