首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

ActionScript 3.0 深度解析 URLRequest 與 URLLoader 實現 HTTP 通訊

     編輯:關於.NET

核心架構:三步驟通訊流程

  1. 建立請求:URLRequest 封裝 URL、方法、Header、資料。
  2. 載入發送:URLLoader 載入請求並發送。
  3. 事件監聽:註冊 URLLoader 事件處理回應/錯誤/進度。

URLRequest 關鍵屬性詳解

屬性說明範例
url 請求目標網址 (支援相對/絕對路徑) var req:URLRequest = new URLRequest("https://api.example.com/data");
method HTTP 方法:GET / POST (預設 GET) req.method = URLRequestMethod.POST;
requestHeaders 自訂 HTTP Header (模擬瀏覽器、攜帶 Token 等) req.requestHeaders.push(new URLRequestHeader("X-API-Key", "abc123"));
data 請求主體資料,**必須封裝為 URLVariables** 見下方範例

URLVariables 封裝請求資料

var vars:URLVariables = new URLVariables();
// 方式 1: 鍵值對 (application/x-www-form-urlencoded)
vars.userId = "123";
vars.action = "login";

// 方式 2: JSON 字串 (需後端支援解析)
vars.jsonData = '{"id":2,"name":"test"}';

var req:URLRequest = new URLRequest("https://localhost:25212/index.aspx");
req.data = vars;
req.method = URLRequestMethod.POST;

URLLoader 事件完整對照

事件觸發時機典型用途
Event.OPEN 請求開始建立連線 顯示「連線中...」狀態
ProgressEvent.PROGRESS 資料下載中 進度條:bytesLoaded / bytesTotal
Event.COMPLETE 資料成功載入完成 解析 loader.data,主要業務邏輯處
IOErrorEvent.IO_ERROR 網路/HTTP 錯誤 (404, 500, 逾時等) 錯誤提示、重試邏輯
SecurityErrorEvent.SECURITY_ERROR 跨域策略檔案缺失或拒絕 提示跨域問題、引導部署 crossdomain.xml

URLLoaderDataFormat 回應資料格式指定

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;     // 預設,純文字
// loader.dataFormat = URLLoaderDataFormat.BINARY;  // 二進位 (ByteArray)
// loader.dataFormat = URLLoaderDataFormat.VARIABLES; // URL 編碼變數

完整 POST JSON 範例 (含錯誤處理)

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.events.Event;
import flash.events.IOErrorEvent;

var url:String = "https://localhost:25212/index.aspx";
var vars:URLVariables = new URLVariables();
vars.data = '{"id":"2"}'; // JSON 字串

var req:URLRequest = new URLRequest(url);
req.data = vars;
req.method = URLRequestMethod.POST;
req.requestHeaders.push(new URLRequestHeader("Content-Type", "application/x-www-form-urlencoded"));

var loader:URLLoader = new URLLoader(req);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);

function onComplete(e:Event):void {
    trace("伺服器回應: " + loader.data);
    // 可進一步用 JSON.parse 解析
}

function onError(e:IOErrorEvent):void {
    trace("請求失敗: " + e.text);
}

.NET 後端對應處理 (ASP.NET WebForms 範例)

public partial class Index : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        string data = Request.Form["data"]; // 取得 jsonData 或 data 參數
        Response.Write("恭喜,資料請求成功~ " + data);
    }
}
伺服器端代碼 客戶端執行結果

進階應用場景

  • 跨域存取:伺服器根目錄放置 crossdomain.xml 允許 allow-access-from domain="*"。
  • 檔案上傳:配合 FileReference 實現多檔上傳進度監控。
  • Socket 通訊:需長連線/即時推送時改用 XMLSocket 或 Socket 類別。

總結

URLRequest + URLLoader 是 AS3 網路通訊基石,掌握 Header/資料封裝、事件流、資料格式、錯誤處理四大面向,即可實現從簡單 API 呼叫到複雜檔案傳輸的各類需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved