bool HttpRpcRequest::ParseMessageFromResponse(FHttpResponsePtr response) { const FString contentType = response->GetContentType(); if (contentType.StartsWith(kContentTypeJson)) { } else if (contentType.StartsWith(kContentTypeASCII)) { if (!google::protobuf::TextFormat::ParseFromString(TCHAR_TO_UTF8(*response->GetContentAsString()), callState_.GetResponse())) { UE_LOG(HttpRpcRequestLog, Error, TEXT("ASCII response parse failed")); return false; } return true; } else if (contentType.StartsWith(kContentTypeBinary)) { } else { UE_LOG(HttpRpcRequestLog, Error, TEXT("Invalid content type '%s'"), *contentType); } return false; }
void UMasterServerFunctions::OnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) { FString MessageBody = ""; if (!Response.IsValid()) { CurrentRequest.ResponseType = EHttpResponse::HR_NoData; Closed(MessageBody); return; } if (EHttpResponseCodes::IsOk(Response->GetResponseCode())) { if (Response->GetContentType().Equals("application/json")) { MessageBody = DecompressBytes(Response->GetContent()); ProcessJSON(MessageBody); } } else { MessageBody = FString::Printf(TEXT("{\"success\":\"HTTP Error: %d\"}"), Response->GetResponseCode()); } Closed(MessageBody); }