diff --git a/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs b/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
index d9e579f..f4e47a3 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
@@ -27,7 +27,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/getToken")]
- Task> GetToken([Body(BodySerializationMethod.UrlEncoded)] JYRequestParameter requestParameter);
+ Task> GetToken([Body(BodySerializationMethod.UrlEncoded)] JYRequestParameter requestParameter);
///
/// 启动游戏
@@ -35,7 +35,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/playGame")]
- Task>> PlayGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameSettings playGameSettings);
+ Task>> PlayGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameSettings playGameSettings);
///
///排队查询
@@ -43,7 +43,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/playQueue")]
- Task>> PlayGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameQueue playGameQueue);
+ Task>> PlayGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameQueue playGameQueue);
///
/// 取消排队
@@ -51,7 +51,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/cancelQueue")]
- Task>> CancelQueue([Body(BodySerializationMethod.UrlEncoded)] PlayGameQueue playGameQueue);
+ Task>> CancelQueue([Body(BodySerializationMethod.UrlEncoded)] PlayGameQueue playGameQueue);
///
/// 切换视频等级
@@ -59,7 +59,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/displayGrade")]
- Task>> DisplayGrade([Body(BodySerializationMethod.UrlEncoded)] DisplayGradeSettings playGameQueue);
+ Task>> DisplayGrade([Body(BodySerializationMethod.UrlEncoded)] DisplayGradeSettings playGameQueue);
///
/// 切换视频等级
@@ -67,7 +67,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/reconPlayGame")]
- Task>> ReconPlayGame([Body(BodySerializationMethod.UrlEncoded)] DisplayGradeSettings playGameQueue);
+ Task>> ReconPlayGame([Body(BodySerializationMethod.UrlEncoded)] DisplayGradeSettings playGameQueue);
///
/// 停止游戏
@@ -75,14 +75,14 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/stopGame")]
- Task>> StopGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameCommonSetting playGameQueue);
+ Task>> StopGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameCommonSetting playGameQueue);
///
/// 获取会话列表
///
///
[Post("/jyapi/getSessionList")]
- Task>> GetSessionList();
+ Task>> GetSessionList();
}
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
index 74b1bb5..7e1c7fd 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
@@ -37,10 +37,10 @@ namespace CloudGaming.Code.Game
///
public async Task GetTokenAsync(RequestBaseModel requestBaseModel)
{
- if (_UserId == 0)
- {
- throw MessageBox.ErrorShow("请先登录");
- }
+ //if (_UserId == 0)
+ //{
+ // throw MessageBox.ErrorShow("请先登录");
+ //}
if (string.IsNullOrEmpty(requestBaseModel.Sn))
{
throw MessageBox.ErrorShow("设备号不能为空");
@@ -105,7 +105,6 @@ namespace CloudGaming.Code.Game
playGameSettings.ModelName = modelName;
playGameSettings.StartResolution = "1080P";
var data = await JYApi.PlayGame(playGameSettings);
- //var jobj = JsonConvert.DeserializeObject(data);
T_User_GameList t_User_GameList = new T_User_GameList()
{
Channel = this.AppRequestInfo.Channel,
@@ -117,7 +116,7 @@ namespace CloudGaming.Code.Game
UpdateTime = DateTime.Now,
UserId = _UserId,
};
-
+
if (data.IsLineUp)
{
t_User_GameList.Status = (int)PlayGameStatus.排队中;
diff --git a/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiHandler.cs b/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiHandler.cs
index 88e0031..daaf67c 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiHandler.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/JY/JYApiHandler.cs
@@ -1,14 +1,7 @@
-using CloudGaming.Code.AppExtend;
-using CloudGaming.Code.AppExtend.ConfigModel;
-using CloudGaming.DtoModel.PlayGame;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
-using Microsoft.Extensions.DependencyInjection;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Text;
-using System.Threading.Tasks;
namespace CloudGaming.Code.JY;
@@ -66,10 +59,23 @@ public class JYApiHandler : DelegatingHandler
}
}
- //var x = await base.SendAsync(request, cancellationToken);
- //var json = await x.Content.ReadAsStringAsync();
- //调用下一个处理器
- return await base.SendAsync(request, cancellationToken); ;
+ var settings = new JsonSerializerSettings
+ {
+ ReferenceLoopHandling = ReferenceLoopHandling.Ignore
+ };
+ //var re = JsonConvert.SerializeObject(request, settings);
+ var response = await base.SendAsync(request, cancellationToken);
+ if (response.IsSuccessStatusCode)
+ {
+ var contentString = await response.Content.ReadAsStringAsync();
+ var jobj = JsonConvert.DeserializeObject(contentString);
+ jobj["RequestStr"] = await request.ToJsonAsync();
+ jobj["ResponseStr"] = SerializeHttpResponseMessage(response, contentString);
+ var json = JsonConvert.SerializeObject(jobj);
+ var newContent = new StringContent(json, Encoding.UTF8, "application/json");
+ response.Content = newContent;
+ }
+ return response;
}
private SortedDictionary ParseFormData(string formData)
{
@@ -92,7 +98,7 @@ public class JYApiHandler : DelegatingHandler
///
///
///
- private static string dic2PostData(SortedDictionary dic)
+ private string dic2PostData(SortedDictionary dic)
{
StringBuilder postData = new StringBuilder();
foreach (var item in dic)
@@ -115,7 +121,7 @@ public class JYApiHandler : DelegatingHandler
///
///
///
- public static string signEncode(SortedDictionary dicParams, string key)
+ public string signEncode(SortedDictionary dicParams, string key)
{
StringBuilder str = new StringBuilder();
foreach (var item in dicParams)
@@ -132,4 +138,17 @@ public class JYApiHandler : DelegatingHandler
str.AppendFormat("&key={0}", key);
return MD5Encryption.ComputeMD5Hash(str.ToString()).ToUpper();
}
+
+ public string SerializeHttpResponseMessage(HttpResponseMessage response, string content)
+ {
+ var responseInfo = new
+ {
+ StatusCode = response.StatusCode,
+ ReasonPhrase = response.ReasonPhrase,
+ Headers = response.Headers,
+ Content = content,
+ };
+
+ return JsonConvert.SerializeObject(responseInfo, Formatting.None);
+ }
}
\ No newline at end of file
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYApiResponse.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYApiResponse.cs
new file mode 100644
index 0000000..0654bcf
--- /dev/null
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYApiResponse.cs
@@ -0,0 +1,20 @@
+using HuanMeng.DotNetCore.Base;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CloudGaming.DtoModel.JY
+{
+ ///
+ ///
+ ///
+ ///
+ public class JYApiResponse : JYResponseCode where T : class, new()
+ {
+ public string RequestStr { get; set; } // 请求信息
+ public string ResponseStr { get; set; } // 响应信息
+ }
+}
diff --git a/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpRequestMessageExtensions.cs b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpRequestMessageExtensions.cs
new file mode 100644
index 0000000..4976da0
--- /dev/null
+++ b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpRequestMessageExtensions.cs
@@ -0,0 +1,28 @@
+using Newtonsoft.Json;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HuanMeng.DotNetCore.Utility;
+
+///
+///
+///
+public static class HttpRequestMessageExtensions
+{
+ public static async Task ToJsonAsync(this HttpRequestMessage request)
+ {
+ var requestInfo = new
+ {
+ Method = request.Method.Method,
+ Url = request.RequestUri?.ToString(),
+ Headers = request.Headers,
+ Content = request.Content != null ? await request.Content.ReadAsStringAsync() : null
+ };
+
+ return JsonConvert.SerializeObject(requestInfo, Formatting.None);
+ }
+}
diff --git a/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpResponseMessageExtensions.cs b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpResponseMessageExtensions.cs
new file mode 100644
index 0000000..0f67a38
--- /dev/null
+++ b/src/CloudGaming/Utile/HuanMeng.DotNetCore/Utility/HttpResponseMessageExtensions.cs
@@ -0,0 +1,40 @@
+using Newtonsoft.Json;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HuanMeng.DotNetCore.Utility;
+
+///
+///
+///
+public static class HttpResponseMessageExtensions
+{
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ToJsonAsync(this HttpResponseMessage response)
+ {
+ var responseInfo = new
+ {
+ StatusCode = response.StatusCode,
+ ReasonPhrase = response.ReasonPhrase,
+ Headers = response.Headers,
+ Content = response.Content != null ? await response.Content.ReadAsStringAsync() : null,
+ RequestMessage = response.RequestMessage != null
+ ? new
+ {
+ Method = response.RequestMessage.Method.Method,
+ Url = response.RequestMessage.RequestUri.ToString()
+ }
+ : null
+ };
+
+ return JsonConvert.SerializeObject(responseInfo, Formatting.Indented);
+ }
+}