Как настроить клиент для доступа с authsecret? - PullRequest
3 голосов
/ 27 сентября 2019

Я использую клиент, и мне нужно вызвать сервис, используя параметр 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

Итак, что мне нужно сделать, чтобы клиент создал запрос в правильном формате?

1 Ответ

1 голос
/ 27 сентября 2019

Его нужно отправить как параметр запроса (т. Е. QueryString или FormData), который вы можете сделать с помощью HTTP Utils с:

var url = baseUrl.CombineWith(requestDto.ToUrl()).AddQueryParam("authsecret", secret);
var res = url.GetJsonFromUrl().FromJson<MyResponse>();

В противном случае, поскольку AuthSecret не являетсяСвойство по вашему запросу DTO вы не сможете отправить как параметр запроса в теле запроса, но вы должны быть в состоянии отправить параметр в заголовках запроса с:

var client = new JsonServiceClient(baseUrl) {
    RequestFilter = req => req.Headers[HttpHeaders.XParamOverridePrefix+"authsecret"] = secret
};
...