Saya menggunakan HttpWebRequest untuk MENDAPATKAN dari layanan web, yang mengembalikan saya string JSON. Ini terlihat seperti ini untuk GET:
string GET(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try {
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream()) {
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (WebException ex) {
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
}
throw;
}
}
Saya kemudian menggunakan JSON.Net untuk mengurai string secara dinamis. Atau, Anda dapat membuat kelas C # secara statis dari contoh keluaran JSON menggunakan alat codeplex ini: http://jsonclassgenerator.codeplex.com/
POST terlihat seperti ini:
void POST(string url, string jsonContent)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
Byte[] byteArray = encoding.GetBytes(jsonContent);
request.ContentLength = byteArray.Length;
request.ContentType = @"application/json";
using (Stream dataStream = request.GetRequestStream()) {
dataStream.Write(byteArray, 0, byteArray.Length);
}
long length = 0;
try {
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
length = response.ContentLength;
}
}
catch (WebException ex) {
}
}
Saya menggunakan kode seperti ini dalam pengujian otomatis layanan web kami.
Encoding.GetEncoding("utf-8")
dapat diganti denganEncoding.UTF8
WebClient untuk mengambil konten dari url jarak jauh dan JavaScriptSerializer atau Json.NET untuk membatalkan panggilan JSON menjadi objek .NET. Misalnya Anda menentukan kelas model yang akan mencerminkan struktur JSON dan kemudian:
using (var client = new WebClient()) { var json = client.DownloadString("http://example.com/json"); var serializer = new JavaScriptSerializer(); SomeModel model = serializer.Deserialize<SomeModel>(json); // TODO: do something with the model }
Ada juga beberapa kerangka kerja klien REST yang dapat Anda periksa seperti RestSharp .
sumber
Meskipun jawaban yang ada merupakan pendekatan yang valid, namun sudah kuno. HttpClient adalah antarmuka modern untuk bekerja dengan layanan web RESTful . Periksa bagian contoh halaman di tautan, ini memiliki kasus penggunaan yang sangat mudah untuk HTTP GET asynchronous.
using (var client = new System.Net.Http.HttpClient()) { return await client.GetStringAsync("https://reqres.in/api/users/3"); //uri }
sumber