Beispiel #1
0
        private static void ResponseCallback(System.IAsyncResult ar)
        {
            /* 状態オブジェクトとしてわたされたCurlを取得 */
            Curl www = (Curl)ar.AsyncState;

            try {
                /* 非同期要求を終了 */
                System.Net.HttpWebResponse res =
                    (System.Net.HttpWebResponse)www.request.EndGetResponse(ar);

                /* status code */
                www.status = (int)res.StatusCode;

                /* 読み出し用ストリームを取得 */
                www.responseStream = res.GetResponseStream();

                /* 非同期でデータの読み込みを開始 */
                www.responseStream.BeginRead(www.readWorkMemory, 0, www.readWorkMemory.Length,
                                             new System.AsyncCallback(ReadCallback), www);
            }
            catch (System.Exception e) {
                www.exception       = e;
                www.requestFinished = true;
            }
        }
Beispiel #2
0
        /* 非同期読み込み完了時に呼び出されるコールバックメソッド */
        private static void ReadCallback(System.IAsyncResult ar)
        {
            /* 状態オブジェクトとしてわたされたCurlを取得 */
            Curl www = (Curl)ar.AsyncState;

            try {
                /* データを読み込む */
                int readSize = www.responseStream.EndRead(ar);

                if (readSize > 0)
                {
                    /* データが読み込めた時 */
                    /* 読み込んだデータをMemoryStreamに保存する */
                    www.responseData.Write(www.readWorkMemory, 0, readSize);

                    /* 再び非同期でデータを読み込む */
                    www.responseStream.BeginRead(www.readWorkMemory, 0, www.readWorkMemory.Length,
                                                 new System.AsyncCallback(ReadCallback), www);
                }
                else
                {
                    /* データの読み込みが終了した時 */
                    /* 閉じる */
                    www.responseStream.Close();
                    www.responseStream  = null;
                    www.requestFinished = true;
                }
            }
            catch (System.Exception e) {
                www.exception       = e;
                www.requestFinished = true;
            }
        }
Beispiel #3
0
        public WebYieldContext(CallAttr attr, ResponseDelegate d, string url,
                               object[] args, Dictionary <string, object> headers)
        {
            var str = Json.Serialize(args);

            byte[] body = System.Text.Encoding.ASCII.GetBytes(str);
            this.d          = d;
            this.timeout_at = Time.time + attr.timeout;
            //Debug.Log("WWW parm:" + url + "|" + str + "|" + headers);
            _www    = new Curl(url, body, headers);
            _reader = Start();
        }