// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
#include "HttpTapRank.h"
|
|
#include "HttpModule.h"
|
#include "JsonObjectConverter.h"
|
#include "Taptap.h"
|
#include "GenericPlatform/GenericPlatformHttp.h"
|
#include "Interfaces/IHttpResponse.h"
|
|
void UHttpTapRank::OnProcessRequestComplete(TSharedPtr<IHttpRequest, ESPMode::ThreadSafe> request,
|
TSharedPtr<IHttpResponse, ESPMode::ThreadSafe> response, bool arg)
|
{
|
FTapRankResponse resp;
|
|
if (request->GetStatus() == EHttpRequestStatus::Succeeded)
|
{
|
TAPLOG_D(TEXT("taprank报文:%s"),*response->GetContentAsString())
|
if (!FJsonObjectConverter::JsonObjectStringToUStruct(*response->GetContentAsString(),&resp))
|
{
|
TAPLOG_E(TEXT("分析返回报文时,转化json字符串错误!"))
|
return;
|
}
|
HttpTapRankRequestSuccessEventHandle.Broadcast(resp,request->GetStatus(),true);
|
return;
|
}
|
HttpTapRankRequestSuccessEventHandle.Broadcast(resp,request->GetStatus(),true);
|
}
|
|
void UHttpTapRank::StartRequest()
|
{
|
const TSharedRef<IHttpRequest> request = FHttpModule::Get().CreateRequest();
|
request->SetVerb(TEXT("Get"));
|
const auto url = BuildURL();
|
request->SetURL(url);
|
request->SetHeader("Content-Type","application/json");
|
request->SetHeader("X-LC-Id",AppID);
|
request->SetHeader("X-LC-Key",AppKey);
|
|
request->SetTimeout(TimeOut);
|
request->OnProcessRequestComplete().BindUObject(this,&UHttpTapRank::OnProcessRequestComplete);
|
if (!request->ProcessRequest())
|
{
|
UE_LOG(LogTemp,Log,TEXT("tapRank请求出错"))
|
}
|
}
|
|
FString UHttpTapRank::BuildURL() const
|
{
|
FString url= TAP_RANK_HOST;
|
url.Append(TEXT("/1.1/leaderboard/leaderboards/user/"));
|
url.Append(this->StatisticName);
|
url.Append(TEXT("/ranks?"));
|
url.Append(BuildURLQueryString(TEXT("startPosition"),FString::FromInt(StartPosition)));
|
url.Append("&");
|
url.Append(BuildURLQueryString(TEXT("maxResultsCount"),FString::FromInt(MaxResultsCount)));
|
url.Append("&");
|
url.Append(BuildURLQueryString(TEXT("includeKeys"),TEXT("nickname,avatar")));
|
return url;
|
}
|
|
FString UHttpTapRank::BuildURLQueryString(FString name, FString value) const
|
{
|
FString temp = FGenericPlatformHttp::UrlEncode(value);
|
FString result = FString::Printf(TEXT("%s=%s"),*name,*temp);
|
return result;
|
}
|