当前位置:   article > 正文

UE4之HTTP请求_ue4 http

ue4 http

UE4中的HTTP模块封装了libcurl的HTTP功能,很容易实现HTTP下载和上传功能,代码如下

  1. class FHttpRequestTest
  2. {
  3. void Download(const FString& URL)
  4. {
  5. TSharedRef HttpReuest = FHttpModule::Get().CreateRequest();
  6. HttpReuest->SetURL(URL);
  7. HttpReuest->SetVerb(TEXT("GET"));
  8. HttpReuest->SetHeader(TEXT("Content-Type"), TEXT("application/x-www-form-urlencoded"));
  9. HttpReuest->OnProcessRequestComplete().BindRaw(this, &FHttpRequestTest::OnRequestComplete);
  10. HttpReuest->OnRequestProgress().BindRaw(this, &FHttpRequestTest::OnRequestProgress);
  11. HttpReuest->ProcessRequest();
  12. }
  13. void Upload(const FString& URL, const FString& ContentString)//ContentString为需要上传的文件内容,如果不是纯文本就换成TArray类型的参数
  14. {
  15. TSharedRef HttpReuest = FHttpModule::Get().CreateRequest();
  16. HttpReuest->SetURL(URL);
  17. HttpReuest->SetVerb(TEXT("POST"));
  18. HttpReuest->SetHeader(TEXT("Content-Type"), TEXT("application/x-www-form-urlencoded"));
  19. HttpReuest->SetContentAsString(ContentString);//也可以用SetContent,只不过参数要换成TArray
  20. HttpReuest->OnProcessRequestComplete().BindRaw(this, &FHttpRequestTest::OnRequestComplete);
  21. HttpReuest->OnRequestProgress().BindRaw(this, &FHttpRequestTest::OnRequestProgress);
  22. HttpReuest->ProcessRequest();
  23. }
  24. //请求完成
  25. void OnRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded)
  26. {
  27. if (!HttpRequest.IsValid() || !HttpResponse.IsValid())
  28. {
  29. return;
  30. }
  31. else if (bSucceeded && EHttpResponseCodes::IsOk(HttpResponse->GetResponseCode()))
  32. {
  33. //如果是下载请求,可通过这段代码将文件保存
  34. FString Filename = FPaths::GetCleanFilename(HttpRequest->GetURL());
  35. FFileHelper::SaveArrayToFile(HttpResponse->GetContent(), *FString::Printf(TEXT("%s%s"), *FPaths::GameSavedDir(), *Filename));
  36. }
  37. }
  38. //请求进度
  39. void OnRequestProgress(FHttpRequestPtr HttpRequest, int32 BytesSent, int32 BytesReceived)
  40. {
  41. }
  42. };

 

普通的HTTP请求,GET方式与下载功能一样,POST方式与上传功能一样,在下载功能中,如果不知道下载文件的大小,可通过HttpReuest->SetVerb(TEXT("HEAD"));只请求头的方式获取文件大小,文件大小在头的Content-Length字段中

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/91169
推荐阅读
相关标签
  

闽ICP备14008679号