Я использую Flurl (один из моих любимых API), чтобы публиковать данные формы в URL.Я хорошо знаком с использованием атрибутов JsonProperty для именования ключей и использования стандартного корпуса для c #.
Но когда я использую PostUrlEncodedAsync, обычный код JsonProperty не преобразуется в «ключ», а остается «KeyName», и вызов не выполняется.
public class TokenTest
{
[JsonProperty("key")]
public string KeyName { get; set; }
}
Так что я немногосбит с толку, что это не работает прямо из коробки.
var request = new TokenTest
{
KeyName = "ewr1-QuQ5jo88WfCpNPz2kTb8ES",
};
var result = await url.PostUrlEncodedAsync(request).ReceiveString();
Мой вызов не выполняется, так как ему нужен ключ, но я отправляю KeyName.Атрибуты JsonProperty / DataMember всегда работали в прошлом, так почему же здесь происходит сбой?
Поскольку я работаю над проблемой, кажется, что это происходит из-за того, что этот метод вызывает DefaultUrlEncodedSerializer
, чтобы сделатьсериализация.Этот сериализатор игнорирует имена JsonProperty.
var urlEncodedContent = new CapturedUrlEncodedContent(request.Settings.UrlEncodedSerializer.Serialize(token));
var jsonEncodedContent = new CapturedUrlEncodedContent(request.Settings.JsonSerializer.Serialize(token));
Например, jsonEncodedContent использует атрибут JsonProperty
, а urlEncodedContent игнорирует атрибут.