Example #1
0
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);
}