Не уверен, почему ваш параметр ContentLength / ContentType - это обычно для HTTP POST , где существует тело запроса , для которого вы записываете данные через поток.
Это HTTP GET , поэтому тело запроса отсутствует. (просто URI со строкой запроса)
Это должно работать:
using System;
using System.IO;
using System.Net;
using System.Text;
// Create the web request
HttpWebRequest request = WebRequest.Create("http://www.someapi.com/") as HttpWebRequest;
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
РЕДАКТИРОВАТЬ
@ Гейб тоже совершенно прав - попробуйте это на другом компьютере, который не находится за брандмауэром или прокси-сервером.
Мой рабочий ПК находился за прокси-сервером, поэтому для выполнения HTTP-вызовов на основе REST мне нужно было сделать следующее:
var proxyObject = new System.Net.WebProxy("http://myDomain:8080/", true);
System.Net.WebRequest req = System.Net.WebRequest.Create("http://www.someapi.com/");
req.Proxy = proxyObject;
proxyObject.Credentials = New System.Net.NetworkCredential("domain\username","password")