Как использовать метод 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
3 ответов
Если вы используете HttpWebRequest вместо этого, вы получите больше контроля над вызовом. Вы можете изменить глагол REST с помощью свойства метода (по умолчанию 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 ...)
Не уверен, что вы можете использовать WebClient для этого. Но почему бы не использовать HttpClient.GetAsync Метод (Строка)http://msdn.microsoft.com/en-us/library/hh158944.aspx
Как видно из исходного кода .NET, метод HTTP DownloadString зависит от состояния частного поля экземпляра WebClient m_Method, которое очищается до null при каждом новом вызове метода запроса (ссылке) и по умолчанию для создателя веб-запроса (зависит от URI, например, протокол ftp получает другого создателя), но это не является потокобезопасным.
возможно, Вы делитесь этим экземпляром WebClient среди нескольких вызовов одновременно?
Так что это путается. Либо это, либо URI путает создателя WebRequest.