Я пытаюсь загрузить отчет из Datacash через HTTP-сообщение, используя this page в качестве ссылки, и я не могу понять, где я ошибаюсь.Загрузка файла через HTTP-сообщение, где я ошибаюсь?
Мой метод ниже:
private static void DownloadDatacashData(int howManyDays)
{
string post, url, group, user, password, startDate, endDate, type, csvFile;
url = "https://reporting.datacash.com/reporting2/csvlist?";
group = "123456";
user = "autoreport";
password = "foobar";
startDate = DateTime.Now.AddDays(howManyDays).ToString("yyyy-MM-dd");
endDate = DateTime.Now.ToString("yyyy-MM-dd");
type = "stl";
post = String.Format(@"group={0}&user={1}&password={2}&start_date={3}&end_date={4}&type={5}", group, user, password, startDate, endDate, type);
var request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
request.ContentLength = 0;
var postBytes = Encoding.ASCII.GetBytes(post);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
var requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
var response = (HttpWebResponse)request.GetResponse();
var sr = new StreamReader(response.GetResponseStream());
csvFile = sr.ReadToEnd();
sr.Close();
var sw = new StreamWriter("C:\\foo\\bar.csv", false);
sw.Write(csvFile);
sw.Flush();
sw.Close();
}
Прежде всего, пост выполняется. Но я всегда получаю файл с текстом «Ошибка: тип отчета не найден». Если я изменил URL-адрес, я получаю сообщение об ошибке, поэтому этот URL-адрес определенно отвечает на HTTP-сообщение. Я пробовал это с и без? в исходном URL-адресе и с и без? в начале строки сообщения.
Я уже пытался связаться с технической поддержкой Datacash, и они не могли мне помочь. Я отправил им код, который я использую, и все, что я получил, было то, что на их конце не было ничего плохого.
Учетные данные верны, пароль представляет собой комбинацию букв и цифр (без специальных символов).
Я знаю, что не многие из вас будут использовать datacash, но глядя на мой код и информацию here, есть ли что-то явно неправильное в том, что я делаю? Я собираюсь по кругу.
Thankyou
Вы уверены, что все значения (группа, дата начала, дата окончания, тип) верны? Группа будет казаться вероятным кандидатом. Кроме того, может быть, что ASCII не является надлежащим кодированием данных формы в вашем веб-запросе. –