如何配置客户端以使用 authsecret 访问?
How to configure client for access with authsecret?
我正在使用客户端,我需要使用 authsecret 参数调用服务。
如果我将此参数添加到基础 url,它会给我一个序列化错误。
String baseUrl = AppConfig.GetAppApiUrl();
var client = new JsonServiceClient(baseUrl.AddQueryParam("authsecret","secretz123!"));
var c = client.Send(new ComuneRequest { Id = "A001" });
使用Fiddler发现客户端生成的请求不正确:
POST
http://192.168.0.63:820/?authsecret=secretz123%21/json/reply/ComuneRequest
那么,我需要做什么才能让客户端以正确的格式创建请求?
它需要作为请求参数(即 QueryString 或 FormData)发送,您可以使用 HTTP Utils 和:
var url = baseUrl.CombineWith(requestDto.ToUrl()).AddQueryParam("authsecret", secret);
var res = url.GetJsonFromUrl().FromJson<MyResponse>();
否则,由于 AuthSecret
不是您的请求 DTO 中的 属性,您将无法将其作为请求参数发送至 Body,但您应该能够在请求 Headers 中发送参数:
var client = new JsonServiceClient(baseUrl) {
RequestFilter = req => req.Headers[HttpHeaders.XParamOverridePrefix+"authsecret"] = secret
};
我正在使用客户端,我需要使用 authsecret 参数调用服务。 如果我将此参数添加到基础 url,它会给我一个序列化错误。
String baseUrl = AppConfig.GetAppApiUrl();
var client = new JsonServiceClient(baseUrl.AddQueryParam("authsecret","secretz123!"));
var c = client.Send(new ComuneRequest { Id = "A001" });
使用Fiddler发现客户端生成的请求不正确:
POST http://192.168.0.63:820/?authsecret=secretz123%21/json/reply/ComuneRequest
那么,我需要做什么才能让客户端以正确的格式创建请求?
它需要作为请求参数(即 QueryString 或 FormData)发送,您可以使用 HTTP Utils 和:
var url = baseUrl.CombineWith(requestDto.ToUrl()).AddQueryParam("authsecret", secret);
var res = url.GetJsonFromUrl().FromJson<MyResponse>();
否则,由于 AuthSecret
不是您的请求 DTO 中的 属性,您将无法将其作为请求参数发送至 Body,但您应该能够在请求 Headers 中发送参数:
var client = new JsonServiceClient(baseUrl) {
RequestFilter = req => req.Headers[HttpHeaders.XParamOverridePrefix+"authsecret"] = secret
};