如何配置客户端以使用 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
};