mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
可自定义数据节点
This commit is contained in:
@@ -22,10 +22,6 @@ namespace SDKCSharp.Client
|
||||
|
||||
private static OpenConfig DEFAULT_CONFIG = new OpenConfig();
|
||||
|
||||
private static char DOT = '.';
|
||||
private static char UNDERLINE = '_';
|
||||
public static string DATA_SUFFIX = "_response";
|
||||
|
||||
private Dictionary<string, string> header = new Dictionary<string, string>();
|
||||
|
||||
|
||||
@@ -35,6 +31,7 @@ namespace SDKCSharp.Client
|
||||
|
||||
private OpenConfig openConfig;
|
||||
private OpenRequest openRequest;
|
||||
private DataNameBuilder dataNameBuilder;
|
||||
|
||||
|
||||
public OpenClient(string url, string appId, string privateKey) : this(url, appId, privateKey,false, DEFAULT_CONFIG)
|
||||
@@ -59,6 +56,7 @@ namespace SDKCSharp.Client
|
||||
{
|
||||
this.privateKey = LoadCertificateFile(privateKey);
|
||||
}
|
||||
this.dataNameBuilder = openConfig.DataNameBuilder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -111,9 +109,9 @@ namespace SDKCSharp.Client
|
||||
string sign = SignUtil.CreateSign(form, privateKey, request.Charset, request.SignType);
|
||||
form[this.openConfig.SignName] = sign;
|
||||
|
||||
string resp = this.doExecute(url, requestForm, header);
|
||||
string resp = this.DoExecute(url, requestForm, header);
|
||||
|
||||
return this.parseResponse<T>(resp, request);
|
||||
return this.ParseResponse<T>(resp, request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -123,7 +121,7 @@ namespace SDKCSharp.Client
|
||||
/// <param name="requestForm">请求内容</param>
|
||||
/// <param name="header">请求header</param>
|
||||
/// <returns>返回服务器响应内容</returns>
|
||||
protected virtual String doExecute(String url, RequestForm requestForm, Dictionary<string, string> header)
|
||||
protected virtual String DoExecute(String url, RequestForm requestForm, Dictionary<string, string> header)
|
||||
{
|
||||
return openRequest.Request(this.url, requestForm, header);
|
||||
}
|
||||
@@ -135,9 +133,9 @@ 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 T ParseResponse<T>(string resp, BaseRequest<T> request) where T: BaseResponse {
|
||||
string method = request.Method;
|
||||
string dataName = method.Replace(DOT, UNDERLINE) + DATA_SUFFIX;
|
||||
string dataName = this.dataNameBuilder.Build(method);
|
||||
Dictionary<string, object> jsonObject = JsonUtil.ParseToDictionary(resp);
|
||||
object data = jsonObject[dataName];
|
||||
string jsonData = data == null ? "{}" : data.ToString();
|
||||
|
27
sop-sdk/sdk-csharp/SDKCSharp/Common/CustomDataNameBuilder.cs
Normal file
27
sop-sdk/sdk-csharp/SDKCSharp/Common/CustomDataNameBuilder.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
namespace SDKCSharp.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回固定的dataName
|
||||
/// </summary>
|
||||
public class CustomDataNameBuilder: DataNameBuilder
|
||||
{
|
||||
|
||||
private string dataName = "result";
|
||||
|
||||
public CustomDataNameBuilder()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public CustomDataNameBuilder(string dataName)
|
||||
{
|
||||
this.dataName = dataName;
|
||||
}
|
||||
|
||||
public string Build(string method)
|
||||
{
|
||||
return dataName;
|
||||
}
|
||||
}
|
||||
}
|
13
sop-sdk/sdk-csharp/SDKCSharp/Common/DataNameBuilder.cs
Normal file
13
sop-sdk/sdk-csharp/SDKCSharp/Common/DataNameBuilder.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
namespace SDKCSharp.Common
|
||||
{
|
||||
public interface DataNameBuilder
|
||||
{
|
||||
/// <summary>
|
||||
/// 构建数据节点名称
|
||||
/// </summary>
|
||||
/// <returns>返回数据节点名称.</returns>
|
||||
/// <param name="method">方法名.</param>
|
||||
string Build(string method);
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
namespace SDKCSharp.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// 将方法名中的"."转成"_"并在后面追加"_response"。
|
||||
/// 如:alipay.trade.order.settle --> alipay_trade_order_settle_response。
|
||||
/// </summary>
|
||||
public class DefaultDataNameBuilder : DataNameBuilder
|
||||
{
|
||||
|
||||
private const char DOT = '.';
|
||||
private const char UNDERLINE = '_';
|
||||
private const string DATA_SUFFIX = "_response";
|
||||
|
||||
public string Build(string method)
|
||||
{
|
||||
return method.Replace(DOT, UNDERLINE) + DATA_SUFFIX;
|
||||
}
|
||||
}
|
||||
}
|
@@ -12,7 +12,7 @@ namespace SDKCSharp.Common
|
||||
{
|
||||
|
||||
private String successCode = SdkConfig.SUCCESS_CODE;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 返回码成功值
|
||||
/// </summary>
|
||||
@@ -186,6 +186,11 @@ namespace SDKCSharp.Common
|
||||
public string SignTypeName { get => signTypeName; set => signTypeName = value; }
|
||||
|
||||
|
||||
|
||||
private DataNameBuilder dataNameBuilder = SdkConfig.dataNameBuilder;
|
||||
/// <summary>
|
||||
/// 节点名称构造器
|
||||
/// </summary>
|
||||
/// <value>The data name builder.</value>
|
||||
public DataNameBuilder DataNameBuilder { get => dataNameBuilder; set => dataNameBuilder = value; }
|
||||
}
|
||||
}
|
||||
|
@@ -20,5 +20,7 @@ namespace SDKCSharp.Common
|
||||
public static Encoding CHARSET = Encoding.UTF8;
|
||||
|
||||
public static SignType SIGN_TYPE = SignType.RSA2;
|
||||
|
||||
public static DataNameBuilder dataNameBuilder = new DefaultDataNameBuilder();
|
||||
}
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using SDKCSharp.Client;
|
||||
using SDKCSharp.Common;
|
||||
using SDKCSharp.Model;
|
||||
using SDKCSharp.Request;
|
||||
using SDKCSharp.Response;
|
||||
|
Reference in New Issue
Block a user