Формат значения ‘XXX.гггг’ недопустим

#c# #.net #httpclient #echosign

#c# #.net #httpclient #эхо-сигнал

Вопрос:

Я пытаюсь настроить заголовок if-match следующим образом и использовать HttpClient, доступный в System.Net.Http:

 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var adobeRequest = new HttpRequestMessage(HttpMethod.Put, new Uri(url))
{
    Content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json")
};

if (!string.IsNullOrEmpty(Etag))
    adobeRequest.Headers.Add("If-Match", Etag);

var response = client.SendAsync(adobeRequest);
  

Etag, который я получил от adobe в предыдущем вызове (Get), равен :

64E8BBA87ACFD0C2C84AF6E1193A3761.5334C3A18AB5A054FF3DBC33AFBDF6C

Поэтому, когда я пытаюсь добавить то же самое для запроса Put, это выдает мне следующую ошибку:

Формат значения ’64E8BBA87ACFD0C2C84AF6E1193A3761.5334C3A18AB5A054FF3DBC33AFBDF6C’ недопустим.

Как решить эту проблему? В нем четко указано, что формат недопустим, однако я считаю, что API Adobe используется миллионами других пользователей. Так что каким-то образом это что-то с моей стороны.

Ссылка на Adobe api

Снимок экрана во время отладки

Комментарии:

1. Не мог бы кто-нибудь, пожалуйста, сообщить мне, почему этот вопрос был отклонен?

2. Похоже, что Adobe API принимает e-tag в качестве параметра с именем If-Match вместо заголовка, по крайней мере, в put /agreements/{agreementId}/state . Вы пробовали добавлять значение в качестве параметра с именем If-Match вместо заголовка?

3. Каково фактическое значение Etag ? Полное предположение, но это нормально, когда само значение заключено в кавычки, что затем вызвало бы проблемы, если бы вы передали его как есть в Add , поскольку оно попыталось бы заключить его в собственные кавычки вокруг него, т. Е. Если значение имеет что-то вроде "64E...F6C" , тогда заголовок в конечном итоге был бы ""64E...FC6"" , что было бы недопустимо.

4. @JonathonChase: Нет, я не пробовал, однако в его описании они сказали указать в качестве заголовка. Позвольте мне попробовать добавить его в качестве параметра. Спасибо, Джонатан.

5. В качестве альтернативы (все еще предполагаю), возможно, Add не добавляются кавычки, поэтому заголовок заканчивается как If-Match: 64E...F6C , что также было бы недопустимо. В этом случае вам нужно будет заключить его в кавычки самостоятельно: adobeRequest.Headers.Add("If-Match", $""{Etag}"");

Ответ №1:

Используйте adobeRequest.Headers.TryAddWithoutValidation вместо этого.