Flex介面和Java後台進行Socket互動,socket伺服器端總接收到 <policy-file-request/>資訊,而無法進行下一步通訊。原因是Adobe Flash Player 9.0.124版本後,安全性原則被更改,原來Socket或XmlSocket的應用裡的http方式載入安全性原則的手段不能繼續使用。我們可以通過下面方法來實現。
Socket伺服器端 檢驗得到安全性原則 <policy-file-request/>,如接收則發送策略串
檢驗沒有獲得安全性原則 <policy-file-request/>,則進行商務邏輯處理
用戶端 初始化介面時調用Socket 第一次調用會發送安全性原則建立串連,如成功擷取伺服器端的策略,此用戶端將可以進行正常Socket串連請求
下面是Socket伺服器端的代碼:
InputStream br= socket.getInputStream();
byte [] reader = new byte [1000];
BufferedWriter pw = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream()));
while (br.read(reader)!=-1){
String msg="";
msg=new String(reader,"UTF-8"); //輸入的請求 reader =new byte [1000];
if(msg!=null){
String safe = "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\0";
if(msg.indexOf("<policy-file-request/>") >=0)
{
pw.write(safe); //傳回安全性原則串
pw.flush();
}
else
{
//正常商務邏輯處理
} }
}