一、原因
二、實作的初步成果
開發時間進行了一天,初步成果介紹:使用者登入、自己菜地的植物成熟清單及其名稱,有成熟植物的好友清單。
三、程式開發重點
1. 語言采用c#,該語言開發周期短
2. 需要了解或者利用其他手段來獲知菜地的各種屬性值,利用該值作為資訊顯示和判斷的依據。
3. 模拟http的POST、GET方法,以及cookie的使用和獲得。因為這個關系到網站模拟登入以及登入後的操作。
4. Unicode編碼文字轉換為正常顯示
5. 登入過程中,驗證碼的獲得和送出
6. XML解析,難點是指定子節點,獲得該子節點的值。
7. 正規表達式,使用正則來獲得需要的資訊,避免使用indexof來搜尋。
四、子產品介紹
1. 登入
1)使用HttpWebRequest來實作模拟POST登入,并獲得cookie
res = (HttpWebResponse) req.GetResponse();
strKaixinCookie = req.CookieContainer.GetCookieHeader(new Uri(url)); 2)使用cookie
CookieContainer cookieCon = new CookieContainer();
httpWebRequest.CookieContainer = cookieCon; string [] Cookies=strKaixinCookie.Split(";".ToCharArray());
foreach(string cookie in Cookies)
{
httpWebRequest.CookieContainer.SetCookies(new Uri(url), cookie);
} 2. 登入驗證碼
因為一直在測試程式,導緻每次登陸都會提示我輸入圖檔形式的驗證碼。這裡沒有采用文字識别,而是提示給使用者,讓使用者自己輸入。
獲得驗證碼圖檔,一定要注意否則輸入的驗證碼資訊送出上去後無效。
帶驗證碼送出的串
invisible_mode=0&rcode=與驗證碼相一緻的随機串(必須一樣否則不能驗證失敗)&url=//&email=password=&code=驗證碼
3. 一些URL
登入者的菜地資訊
成熟的好友清單
好友菜地
4. 正規表達式
regex = new Regex("realname/":/"(.+?)/"",RegexOptions.Singleline);
iEnumerator = regex.Matches(strResult).GetEnumerator(); try
{
while (iEnumerator.MoveNext())
{
str+= NormalU2C(((Match)iEnumerator.Current).Groups[1].Value.ToString()) + "/r/n";
}
}
finally
{
IDisposable iDisposable = iEnumerator as IDisposable;
if (iDisposable != null)
iDisposable.Dispose();
} 5. XML操作
nodeList = doc.SelectNodes("/conf/garden/item");
foreach (XmlNode node in nodeList)
XmlNode subNode=node.SelectSingleNode("name");
if (subNode!=null)
{
string strName= subNode.InnerText;
string strProduct=node.SelectSingleNode("crops").InnerText;
str+=strName + " /r/n";
}
}五、暫告一段落