Я пытаюсь получить доступ к параметру строки запроса, который был отправлен с использованием метода POST (WebClient) в веб-API в ASP.NET MVC 5 (в переопределенном атрибуте AuthorizationFilterAttribute).Доступ к строковым переменным запроса, отправленным как POST в HttpActionContext
Для Get, я использовал следующий трюк: var param= actionContext.Request.GetQueryNameValuePairs().SingleOrDefault(x => x.Key.Equals("param")).Value;
Однако после того, как я использую POST, это делает работу, а переменная Фарана устанавливается в нуль. Я думаю, это потому, что метод строки запроса применяется только к URL-адресу, а не к телу. Есть ли способ получить строку запроса (желательно с использованием одного метода) для запросов GET и POST?
EDIT: WebClient код
using (WebClient client = new WebClient())
{
NameValueCollection reqparm = new NameValueCollection();
reqparm.Add("param", param);
byte[] responsebytes = client.UploadValues("https://localhost:44300/api/method/", "POST", reqparm);
string responsebody = Encoding.UTF8.GetString(responsebytes);
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(responsebody);
}
}
Вы, кажется, исходите из фона PHP. Вопреки тому, что этот язык заставляет вас поверить ('$ _GET'), глагол, используемый для запроса страницы, вовсе не связан с строкой запроса. Это просто: часть после '?' В запросе-URI. Покажите код WebClient, который вы используете для отправки запроса POST; Повсюду вы не устанавливаете правильные параметры строки запроса. – CodeCaster
@CodeCaster, я думаю, что это просто веб-API, который создает проблемы. В любом другом случае либо Request ["name"] (как и в PHP :)), либо указав параметр в сигнатуре метода, будет (как для GET, так и для POST). Для Web API это кажется более сложным. – Artem
Нет, это не так. 'actionContext.Request.GetQueryNameValuePairs()' даст вам параметры из строки запроса, независимо от того, какой глагол запросил текущий метод действия. Покажите свой код WebClient. – CodeCaster