直接上代码
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Interfaces/IHttpRequest.h"
#include "NetworkRequest.generated.h"
/**
*
*/
UCLASS()
class MYHTTPMODULE_API UNetworkRequest : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
// 向后端发送Post请求:参数全是字符串
//UFUNCTION(BlueprintCallable, Category = "Network")
static void GetAllMotorMessage();
private:
static void GetAllMotorMessage_RequestComplete(FHttpRequestPtr RequestPtr, FHttpResponsePtr ResponsePtr, bool bIsSuccess);
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "NetworkRequest.h"
#include "HttpModule.h"
#include "Interfaces/IHttpResponse.h"
void UNetworkRequest::GetAllMotorMessage()
{
// 入参的json对象
TSharedRef<FJsonObject> RequestObj = MakeShared<FJsonObject>();
RequestObj->SetStringField("equipmentId", "");
// 入参写入请求体
FString RequestBody;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&RequestBody);
FJsonSerializer::Serialize(RequestObj, Writer);
// 构建请求要素并发送请求
FHttpRequestRef Request = FHttpModule::Get().CreateRequest();
Request->SetHeader("Content-Type", "application/json;charset=UTF-8");
Request->SetVerb("POST");
Request->SetURL("{请求路径}");
Request->SetContentAsString(RequestBody);
Request->OnProcessRequestComplete().BindStatic(&UNetworkRequest::GetAllMotorMessage_RequestComplete);
Request->ProcessRequest();
}
void UNetworkRequest::GetAllMotorMessage_RequestComplete(FHttpRequestPtr RequestPtr, FHttpResponsePtr ResponsePtr, bool bIsSuccess)
{
if (!bIsSuccess) return;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(ResponsePtr->GetContentAsString());
TSharedPtr<FJsonObject> ResponseObj;
if (FJsonSerializer::Deserialize(Reader, ResponseObj))
{
UE_LOG(LogTemp, Display, TEXT("Get Response..............."));
TArray<TSharedPtr<FJsonValue>> data = ResponseObj->GetArrayField("data");
if (data.Num() > 0) {
FString name = data[0]->AsObject()->GetStringField("equipmentName");
UE_LOG(LogTemp, Display, TEXT("first name is: %s"), *name);
}
}
}