Bagaimana saya bisa mengubah kata kerja permintaan WebClient? Tampaknya hanya mengizinkan/default ke POST, bahkan dalam kasus 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;
}
Dan Fiddler mengatakan:
POST http://someservice?apikey=20130701-234126753-X7384&taskId=20130701-234126753-258877330210884 HTTP/1.1
Content-Length: 0
Jika Anda menggunakan HttpWebRequest sebagai gantinya, Anda akan mendapatkan lebih banyak kontrol panggilan. Anda dapat mengubah kata kerja REST dengan properti Method (defaultnya adalah 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 ...)
Seperti yang dapat dilihat pada kode sumber .NET, HTTP Method dari DownloadString tergantung pada keadaan bidang instance WebClient pribadi m_Method, yang dihapus ke null pada setiap panggilan metode permintaan baru (link) dan default ke Pencipta permintaan Web (tergantung pada URI, misalnya protokol ftp mendapat pencipta lain), tetapi ini bukan thread safe.
Mungkin Anda berbagi instance WebClient ini di antara beberapa panggilan secara bersamaan?
Sehingga menjadi bingung. Entah ini atau URI membingungkan pembuat WebRequest.