leopard8352
2023-12-04 8871a733498c8d717714b83bb096b7738224541a
提交 | 用户 | 时间
8871a7 1 // Fill out your copyright notice in the Description page of Project Settings.
L 2
3
4 #include "HttpTapRank.h"
5
6 #include "HttpModule.h"
7 #include "JsonObjectConverter.h"
8 #include "Taptap.h"
9 #include "GenericPlatform/GenericPlatformHttp.h"
10 #include "Interfaces/IHttpResponse.h"
11
12 void UHttpTapRank::OnProcessRequestComplete(TSharedPtr<IHttpRequest, ESPMode::ThreadSafe> request,
13                                             TSharedPtr<IHttpResponse, ESPMode::ThreadSafe> response, bool arg)
14 {
15     FTapRankResponse resp;
16
17     if (request->GetStatus() == EHttpRequestStatus::Succeeded)
18     {
19         TAPLOG_D(TEXT("taprank报文:%s"),*response->GetContentAsString())
20         if (!FJsonObjectConverter::JsonObjectStringToUStruct(*response->GetContentAsString(),&resp))
21         {
22             TAPLOG_E(TEXT("分析返回报文时,转化json字符串错误!"))
23             return;
24         }
25         HttpTapRankRequestSuccessEventHandle.Broadcast(resp,request->GetStatus(),true);
26         return;
27     }
28     HttpTapRankRequestSuccessEventHandle.Broadcast(resp,request->GetStatus(),true);
29 }
30
31 void UHttpTapRank::StartRequest()
32 {
33     const TSharedRef<IHttpRequest> request = FHttpModule::Get().CreateRequest();
34     request->SetVerb(TEXT("Get"));
35     const auto url = BuildURL();
36     request->SetURL(url);
37     request->SetHeader("Content-Type","application/json");
38     request->SetHeader("X-LC-Id",AppID);
39     request->SetHeader("X-LC-Key",AppKey);
40
41     request->SetTimeout(TimeOut);
42     request->OnProcessRequestComplete().BindUObject(this,&UHttpTapRank::OnProcessRequestComplete);
43     if (!request->ProcessRequest())
44     {
45         UE_LOG(LogTemp,Log,TEXT("tapRank请求出错"))
46     }
47 }
48
49 FString UHttpTapRank::BuildURL() const
50 {
51     FString url= TAP_RANK_HOST;
52     url.Append(TEXT("/1.1/leaderboard/leaderboards/user/"));
53     url.Append(this->StatisticName);
54     url.Append(TEXT("/ranks?"));
55     url.Append(BuildURLQueryString(TEXT("startPosition"),FString::FromInt(StartPosition)));
56     url.Append("&");
57     url.Append(BuildURLQueryString(TEXT("maxResultsCount"),FString::FromInt(MaxResultsCount)));
58     url.Append("&");
59     url.Append(BuildURLQueryString(TEXT("includeKeys"),TEXT("nickname,avatar")));
60     return url;
61 }
62
63 FString UHttpTapRank::BuildURLQueryString(FString name, FString value) const
64 {
65     FString temp = FGenericPlatformHttp::UrlEncode(value);
66     FString result = FString::Printf(TEXT("%s=%s"),*name,*temp);
67     return result;
68 }