public Object _dataGet(INakoFuncCallInfo info) { string s = info.StackPopAsString(); string e = info.StackPopAsString(); string ret; WebClient client = new WebClient(); if (e == "Auto") { byte[] bytes = client.DownloadData(s); ret = StrUnit.ToStringAutoEnc(bytes); } else { client.Encoding = Encoding.GetEncoding(e); ret = client.DownloadString(s); } client.Dispose(); return(ret); }
public object _post(INakoFuncCallInfo info) { string url = info.StackPopAsString(); object val = info.StackPop();//TODO:Array string e = info.StackPopAsString(); string query = ""; if (val is string) { query = (string)val; } else if (val is NakoVariable) { List <string> qp = new List <string>(); NakoVarArray arr = (NakoVarArray)val; foreach (NakoVariable kv in arr) { qp.Add(String.Format("{0}={1}", HttpUtility.UrlEncode(kv.key, Encoding.GetEncoding(e)), HttpUtility.UrlEncode((string)kv.Body, Encoding.GetEncoding(e)))); } query = String.Join("&", qp.ToArray()); } else { throw new Exception("variable is not NakoVariable or string"); } byte[] queryBytes = Encoding.ASCII.GetBytes(query); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; using (Stream str = req.GetRequestStream()) { str.Write(queryBytes, 0, queryBytes.Length); } WebResponse response = req.GetResponse(); string ret = ""; if (e == "Auto") { using (Stream sr = response.GetResponseStream()) { byte[] buf = new byte[32768]; int read = 0; using (MemoryStream ms = new MemoryStream()){ do { read = sr.Read(buf, 0, buf.Length); if (read > 0) { ms.Write(buf, 0, read); } } while(read > 0); if (ms.Length > 0) { ret = StrUnit.ToStringAutoEnc(ms.ToArray()); } } } } else { using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(e))) { ret = sr.ReadToEnd(); } } return(ret); }