Pobieranie pliku przez HTTP Post, gdzie się mylę?
Próbuję pobrać raport z Datacash za pośrednictwem postu HTTP przy użyciuta strona jako punkt odniesienia i nie mogę zrozumieć, gdzie się mylę.
Moja metoda jest poniżej:
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();
}
Po pierwsze, post jest wykonywany. Ale zawsze otrzymuję plik z tekstem „Błąd: Nie znaleziono typu raportu”. Jeśli zmienię adres URL, pojawia się błąd, więc ten adres URL zdecydowanie odpowiada na post HTTP. Próbowałem tego z? w początkowym adresie URL oraz z i bez? na początku ciągu postów.
Próbowałem już skontaktować się ze wsparciem technicznym Datacash i nie mogli mi pomóc. Wysłałem im kod, którego używam i wszystko, co wróciłem, to to, że po ich zakończeniu nie było nic złego.
Poświadczenia są poprawne, hasło jest kombinacją liter i cyfr (bez znaków specjalnych).
Wiem, że niewielu z was użyło datacash, ale patrząc na mój kod i informacjetutaj, czy coś jest nie tak z tym, co robię? Idę w kółko.
Dziękuję Ci