2015-12-21 2 views
0

У меня есть кусок кода:Выполнение запроса пут или патч с токена

HttpClient client = new HttpClient(); 

client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", "Username", "password")))); 

var method = new HttpMethod("PATCH"); 

var reqmsg = new HttpRequestMessage(method, uri) 
{ 
    Content = new StringContent(request, Encoding.UTF8, "application/json") 
}; 

HttpResponseMessage response = await client.SendAsync(reqmsg); 

Это прекрасно работает с использованием обычной проверки подлинности. Я хочу использовать маркер, хотя, и если изменить разрешение на использование webtoken:

client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Token", WebToken); 

теперь я получаю 403 Forbidden ошибки. Если я делаю Post или Get, токен работает, но не для Patch или Put. Я предполагаю, что токен как-то лишен. Есть ли способ обойти это?

+0

Вы можете определить, удаляется ли токен или нет, пытаясь сделать это с помощью клиента REST (например, расширения для Chrome/Firefox) или просмотрев запрос с помощью Fiddler. Это может быть проблемой при настройке сервера, а не в вашем коде –

+0

PATCH был успешно протестирован через REST-инфраструктуру, поэтому он не похож на настройку сервера. –

ответ

-2

Вы получаете ошибку 403, потому что кодировка неверна. -facepalm- Вы используете UTF8, а по умолчанию - ANCI ... Не имеет смысла.

+0

Кодировка не имеет абсолютно никакого отношения к неверным учетным данным. Кроме того, нет такой вещи, как «ANCI». Пожалуйста, удалите это. –

Смежные вопросы