0
我試圖通過使用this page作爲參考的HTTP POST下載從Datacash的報告,我想不通我要去的地方錯了。通過HTTP Post下載文件,我在哪裏出錯?
我的方法是如下:
所有的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();
}
首先,執行崗位。但是我總是收到文件「錯誤:找不到報告類型」。如果我更改網址,則會收到錯誤消息,因此此網址肯定會響應HTTP發佈。我已經嘗試過這個,沒有?在最初的網址中,有沒有?在帖子字符串的開頭。
我已經嘗試與Datacash的技術支持取得聯繫,他們不能幫我。我向他們發送了我正在使用的代碼,而我回頭的是他們的結局沒有任何問題。
憑證正確,密碼是字母和數字(無特殊字符)的組合。
我知道你們中不會有很多人會使用datacash,但看着我的代碼和信息here,我在做什麼有什麼明顯的錯誤?我正在轉圈。
三江源
確定所有的值(組,開始日期,結束日期,類型)是否正確?集團似乎是一個可能的候選人。此外,可能是因爲ASCII不是您Web請求中表單數據的正確編碼。 –