Comment changer le verbe d'une requête WebClient? Il semble ne permettre que/default à POST, même dans le cas de 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;
}
Et Fiddler dit:
POST http://someservice?apikey=20130701-234126753-X7384&taskId=20130701-234126753-258877330210884 HTTP/1.1
Content-Length: 0
Si vous utilisez HttpWebRequest à la place, vous obtiendrez un meilleur contrôle de l'appel. Vous pouvez changer le verbe REST par la propriété Method (par défaut, 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 ...)
Vous ne savez pas si vous pouvez utiliser WebClient pour cela. Mais pourquoi ne pas utiliser la méthode HttpClient.GetAsync (String) http://msdn.Microsoft.com/en-us/library/hh158944.aspx
Comme on peut le voir dans le code source de .NET, la méthode HTTP du DownloadString dépend de l’état du champ d’instance privé WebClient m_Method, qui est réinitialisé à chaque nouvel appel de méthode de requête ( link ) et par défaut Créateur de la requête Web (dépend de l'URI, par exemple, le protocole ftp obtient un autre créateur), mais ce n'est pas un thread-safe.
Peut-être partagez-vous cette instance WebClient entre plusieurs appels simultanément?
Donc, il est confus. Ceci ou l'URI confond le créateur de WebRequest.