This commit is contained in:
六如
2024-12-02 23:03:25 +08:00
parent c0cfdbafd9
commit 942826f4b0
107 changed files with 247 additions and 3432 deletions

View File

@@ -177,7 +177,7 @@ namespace SDKCSharp.Client
/// <typeparam name="T">返回的Response类</typeparam>
/// <param name="request">请求对象</param>
/// <returns>返回Response类</returns>
public virtual T Execute<T>(BaseRequest<T> request) where T : BaseResponse
public virtual Result<T> Execute<T>(BaseRequest<T> request)
{
return this.Execute<T>(request, null);
}
@@ -189,7 +189,7 @@ namespace SDKCSharp.Client
/// <param name="request">请求对象</param>
/// <param name="accessToken">accessToken</param>
/// <returns>返回Response类</returns>
public virtual T Execute<T>(BaseRequest<T> request, string accessToken) where T : BaseResponse
public virtual Result<T> Execute<T>(BaseRequest<T> request, string accessToken)
{
RequestForm requestForm = request.CreateRequestForm(this.openConfig);
Dictionary<string, string> form = requestForm.Form;
@@ -225,18 +225,12 @@ namespace SDKCSharp.Client
/// <param name="resp">服务器响应内容</param>
/// <param name="request">请求Request</param>
/// <returns>返回Response</returns>
protected virtual T ParseResponse<T>(string resp, BaseRequest<T> request) where T: BaseResponse
protected virtual Result<T> ParseResponse<T>(string resp, BaseRequest<T> request)
{
string method = request.Method;
string rootNodeName = this.dataNameBuilder.Build(method);
string errorRootNode = openConfig.ErrorResponseName;
Dictionary<string, object> responseData = JsonUtil.ParseToDictionary(resp);
bool errorResponse = responseData.ContainsKey(errorRootNode);
if (errorResponse)
{
rootNodeName = errorRootNode;
}
object data = responseData[rootNodeName];
object data = responseData.GetValueOrDefault(rootNodeName, null);
responseData.TryGetValue(openConfig.SignName, out object sign);
if (sign != null && !string.IsNullOrEmpty(publicKeyPlatform))
{
@@ -247,10 +241,8 @@ namespace SDKCSharp.Client
data = JsonUtil.ToJSONString(checkSignErrorResponse);
}
}
string jsonData = data == null ? "{}" : data.ToString();
T t = JsonUtil.ParseObject<T>(jsonData);
t.Body = jsonData;
return t;
Result<T> result = JsonUtil.ParseObject<Result<T>>(resp);
return result;
}
/// <summary>

View File

@@ -7,7 +7,7 @@ namespace SDKCSharp.Common
public class CustomDataNameBuilder: DataNameBuilder
{
private string dataName = "result";
private string dataName = "data";
public CustomDataNameBuilder()
{

View File

@@ -11,7 +11,7 @@ namespace SDKCSharp.Common
{
public class OpenConfig
{
public static DataNameBuilder DATA_NAME_BUILDER = new DefaultDataNameBuilder();
public static DataNameBuilder DATA_NAME_BUILDER = new CustomDataNameBuilder();
/// <summary>
/// 返回码成功值

View File

@@ -33,9 +33,7 @@ namespace SDKTest
{
TestGet();
Console.WriteLine("--------------------");
TestCommon();
Console.WriteLine("--------------------");
TestUpload();
//TestUpload();
}
// 标准用法
@@ -49,54 +47,20 @@ namespace SDKTest
request.BizModel = model;
// 发送请求
GetStoryResponse response = client.Execute(request);
Result<GetStoryResponse> result = client.Execute(request);
if (response.IsSuccess())
if (result.IsSuccess())
{
// 返回结果
Console.WriteLine("成功response:{0}\n响应原始内容:{1}", JsonUtil.ToJSONString(response), response.Body);
Console.WriteLine("成功response:{0}\n响应原始内容:{1}", JsonUtil.ToJSONString(result), result.Data);
}
else
{
Console.WriteLine("错误, code:{0}, msg:{1}, subCode:{2}, subMsg:{3}",
response.Code, response.Msg, response.SubCode, response.SubMsg);
result.Code, result.Msg, result.SubCode, result.SubMsg);
}
}
// 懒人版如果不想添加Request,Response,Model。可以用这种方式返回Dictionary<string, object>,后续自己处理
private static void TestCommon()
{
// 创建请求对象
CommonRequest request = new CommonRequest("alipay.story.find");
// 请求参数
Dictionary<string, string> bizModel = new Dictionary<string, string>
{
["name"] = "白雪公主"
};
request.BizModel = bizModel;
// 发送请求
CommonResponse response = client.Execute(request);
if (response.IsSuccess())
{
// 返回结果
string body = response.Body;
Dictionary<string, object> dict = JsonUtil.ParseToDictionary(body);
Console.WriteLine("Dictionary内容:");
foreach (var item in dict)
{
Console.WriteLine("{0}:{1}", item.Key, item.Value);
}
}
else
{
Console.WriteLine("错误, code:{0}, msg:{1}, subCode:{2}, subMsg:{3}",
response.Code, response.Msg, response.SubCode, response.SubMsg);
}
}
private static void TestUpload()
{
@@ -119,10 +83,10 @@ namespace SDKTest
request.AddFile(new UploadFile("file1", root + "/file1.txt"));
request.AddFile(new UploadFile("file2", root + "/file2.txt"));
DemoFileUploadResponse response = client.Execute(request);
if (response.IsSuccess())
Result<DemoFileUploadResponse> result = client.Execute(request);
if (result.IsSuccess())
{
List<DemoFileUploadResponse.FileMeta> responseFiles = response.Files;
List<DemoFileUploadResponse.FileMeta> responseFiles = result.Data.Files;
Console.WriteLine("您上传的文件信息:");
responseFiles.ForEach(file =>
{
@@ -133,7 +97,7 @@ namespace SDKTest
else
{
Console.WriteLine("错误, code:{0}, msg:{1}, subCode:{2}, subMsg:{3}",
response.Code, response.Msg, response.SubCode, response.SubMsg);
result.Code, result.Msg, result.SubCode, result.SubMsg);
}
}
}

View File

@@ -3,7 +3,7 @@ using Newtonsoft.Json;
namespace SDKCSharp.Response
{
public class GetStoryResponse: BaseResponse
public class GetStoryResponse
{
[JsonProperty("id")]
public int Id { get; set; }

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TargetFramework>netcoreapp6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>