Подтвердить что ты не робот

Как использовать глагол GET с запросом WebClient?

Как я могу изменить глагол запроса WebClient? Кажется, что разрешить/по умолчанию только POST, даже в случае с DownloadString.

        try
        {
            WebClient client = new WebClient();               
            client.QueryString.Add("apiKey", TRANSCODE_KEY);
            client.QueryString.Add("taskId", taskId);
            string response = client.DownloadString(TRANSCODE_URI + "task");                
            result = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(response);
        }
        catch (Exception ex )
        {
            result = null;
            error = ex.Message + " " + ex.InnerException;
        }

И Скрипач говорит:

POST http://someservice?apikey=20130701-234126753-X7384&taskId=20130701-234126753-258877330210884 HTTP/1.1
Content-Length: 0
4b9b3361

Ответ 1

Если вы используете HttpWebRequest, вместо этого вы получите больше контроля над вызовом. Вы можете изменить глагол REST с помощью свойства Method (по умолчанию GET)

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(HostURI);
request.Method = "GET";
String test = String.Empty;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    Stream dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    test = reader.ReadToEnd();
    reader.Close();
    dataStream.Close();
 }
 DeserializeObject(test ...)

Ответ 3

Как видно из исходного кода .NET, HTTP-метод DownloadString зависит от состояния частного экземпляра WebClient поле m_Method, которое очищается до нуля при каждом вызове метода нового запроса (ссылка) и по умолчанию используется создатель веб-запроса (в зависимости от URI, например, ftp-протокол получает другого создателя), но это не безопасно для потоков.

Возможно, вы совместно используете этот экземпляр WebClient среди нескольких вызовов?

Так что это путает. Либо это, либо URI смущает создателя WebRequest.