public void SendMaigoNekoInfo(NekoData neko) { HttpClient cl = new HttpClient(); string token = ""; MultipartFormDataContent tkncont = new MultipartFormDataContent(); tkncont.Add(new StringContent(System.Environment.GetEnvironmentVariable("NEKODERU_EMAIL")), "email"); tkncont.Add(new StringContent(System.Environment.GetEnvironmentVariable("NEKODERU_PWD")), "password"); var tknresmsg = cl.PostAsync("https://neko.today/api/users/token.json", tkncont); tknresmsg.Wait(10000); if (tknresmsg.IsCompleted) { var tknres = tknresmsg.Result; Context.Logger.LogLine(tknres.StatusCode + ":" + tknres.ReasonPhrase); string strres = tknres.Content.ReadAsStringAsync().Result; //Context.Logger.LogLine(strres); Newtonsoft.Json.Linq.JObject obj = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(strres); if ((bool)obj["success"]) { token = (string)(obj["data"]["token"]); } } if (token == "") { Context.Logger.LogLine("登録エラー!トークンが取得できなかった。"); return; } foreach (var itm in neko.NekoList) { MultipartFormDataContent reqcont = new MultipartFormDataContent(); reqcont.Add(new StringContent(token), "token"); reqcont.Add(new StringContent(""), "locate"); reqcont.Add(new StringContent(itm.ShelterPlace), "address"); reqcont.Add(new StringContent(itm.Content + itm.RangeText + " " + neko.PageUrl), "comment"); reqcont.Add(new StringContent(neko.Title), "name"); reqcont.Add(new ByteArrayContent(itm.ImageData), "image[]", itm.ImageUrl); Context.Logger.LogLine("Content Count:" + reqcont.Count()); Context.Logger.LogLine(""); var response = cl.PostAsync("https://neko.today/api/cats/AddSheltered.json?token=" + token, reqcont); response.Wait(10000); if (response.IsCompleted) { var res = response.Result; Context.Logger.LogLine(res.StatusCode + ":" + res.ReasonPhrase); Context.Logger.LogLine(res.Content.ReadAsStringAsync().Result); } } }
public NekoData RunMaigoNekoFromKumamotoAnimalCenter(DateTime stddt) { NekoData neko = new NekoData(); HttpClient cl = new HttpClient(); Task <HttpResponseMessage> response = cl.GetAsync("http://doubutsuaigo.hinokuni-net.jp/dogscats/catsdetail.php?ymd=" + stddt.ToString("yyyyMMdd")); response.Wait(60000); if (response.IsCompleted) { if (response.Result.IsSuccessStatusCode) { HttpContent content = response.Result.Content; string strxml = content.ReadAsStringAsync().Result; int stidx = strxml.IndexOf("<body>"); int edidx = strxml.IndexOf("</body>"); strxml = strxml.Substring(stidx, edidx - stidx + "</body>".Length); strxml = strxml.Replace("©", "(C)"); XmlDocument doc = new XmlDocument(); doc.LoadXml(strxml); XmlNodeList headnodes = doc.SelectNodes(@"//div[@class='txtcolumn']"); neko.Title = string.Format("熊本市動物愛護センターで{0:yyyy年MM月dd日}に保護された猫です。", stddt); neko.PageUrl = response.Result.RequestMessage.RequestUri.ToString(); Context.Logger.LogLine(neko.Title); foreach (XmlNode headnode in headnodes) { try { NekoItem nekoitm = new NekoItem(); XmlNode node = headnode.SelectSingleNode(@"strong"); nekoitm.RangeText = node.InnerText; Context.Logger.LogLine(nekoitm.RangeText); node = headnode.SelectSingleNode(@"div/ul/li/a"); nekoitm.ImageUrl = @"http://doubutsuaigo.hinokuni-net.jp" + node.Attributes["href"].InnerText; Context.Logger.LogLine(nekoitm.ImageUrl); node = headnode.SelectSingleNode(@"div/dl"); System.Text.StringBuilder sb = new System.Text.StringBuilder(); System.Text.StringBuilder itmstr = new System.Text.StringBuilder(); foreach (XmlNode itm in node.ChildNodes) { if (itm.Name == "dt" && sb.Length > 0) { sb.Append("、"); if (itmstr.ToString().IndexOf("保護場所:") >= 0) { nekoitm.ShelterPlace = itmstr.ToString(); } itmstr.Clear(); } sb.Append(itm.InnerText); itmstr.Append(itm.InnerText); } sb.Append("。"); sb.Replace(nekoitm.ShelterPlace + "、", ""); nekoitm.ShelterPlace = nekoitm.ShelterPlace.Replace("保護場所:", ""); nekoitm.Content = sb.ToString(); Context.Logger.LogLine(nekoitm.Content); neko.NekoList.Add(nekoitm); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); Context.Logger.LogLine(ex.ToString()); } } } } foreach (NekoItem itm in neko.NekoList) { response = cl.GetAsync(itm.ImageUrl, HttpCompletionOption.ResponseHeadersRead); response.Wait(60000); if (response.IsCompleted) { if (response.Result.IsSuccessStatusCode) { HttpContent content = response.Result.Content; itm.ImageData = content.ReadAsByteArrayAsync().Result; } } } return(neko); }