Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }