天天看點

UE4 開發如何使用 Http 請求

準備

在項目 .cs 檔案中加入依賴的子產品:

PublicDependencyModuleNames.AddRange(new string[] {
            "Core",
            "CoreUObject",
            "Engine",
            "InputCore",
            "UMG",
            "SevenColorSDKiOS",
            "Http",
            "Json",
            "Sockets",
            "Networking"      

并且,在需要調用的地方包含頭檔案 #include "HttpModule.h"

Get 請求

// 建立Http 請求

TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = FHttpModule::Get().CreateRequest();
// 設定請求頭
Request->SetHeader("Content-Type", "text/javascript;charset=utf-8");
// 設定請求方式
Request->SetVerb("GET");
// 請求的連結
Request->SetURL(URL);
// 發送請求
Request->ProcessRequest();      

POST 請求

//擷取目前請求
TSharedRef<IHttpRequest, ESPMode::ThreadSafe>* request = THttpRequestMap.Find(CurrentHttpName);
// 設定請求方式
request->Get().SetVerb("POST");
// 請求的連結
request->Get().SetURL(URL);
// 内容包
request->Get().SetContentAsString(jsonStr);
// 設定回調函數
request->Get().OnProcessRequestComplete().BindRaw(this, &FHttpUtil::OnReRequestComplete, CurrentHttpName,URL);
// 發送請求
request->Get().ProcessRequest();      

回調

void FHttpUtil::OnReRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FString keyStr,FString Url) {

  if (HttpResponse == nullptr || EHttpRequestStatus::Failed_ConnectionError == HttpRequest->GetStatus())
  {
    return;
  }

  if (!EHttpResponseCodes::IsOk(HttpResponse->GetResponseCode()))
  {
    TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(HttpResponse->GetContentAsString());
    ....
  }
  else
  {
    TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(HttpResponse->GetContentAsString());
    ....
  }
}      
  1. 閱讀完記得給我點個贊哦,有👍 有動力
  2. 關注公衆号---HelloWorld傑少,第一時間推送新姿勢