-1

Flex 4.6 で StageWebView からページ ソースを読み取るにはどうすればよいですか?

別の一意の URL (全員用) への URL リンクにセッションが含まれており、ログインする必要があるため、HttpRequest を使用してソースを読み取ることはできません。そのため、StageWebView を使用してページ ソースを取得する 1 つの方法があると思いますが、StageWebView でメソッドまたは変数を見つけることができません。クラス。

import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;

private var webView:StageWebView;
private var httpReq:HTTPService;
private var urlVar:URLVariables;
private var session:String;

protected function creationCompleteHandler(event:FlexEvent):void
{
    httpReq = new HTTPService();
    httpReq.addEventListener(ResultEvent.RESULT, httpResult);
    httpReq.addEventListener(FaultEvent.FAULT, httpFault);
    httpReq.method = "POST";
    httpReq.resultFormat = "text";


    urlVar = new URLVariables();
    urlVar.UserName = "test";
    urlVar.Password = "test";
}

protected function httpResult(e:ResultEvent):void
{
    trace(e.result);
    trace("Done!");
}

protected function httpFault(e:FaultEvent):void
{
    trace("Error!");
}

protected function addedToStageHandler(event:Event):void
{
    webView = new StageWebView();
    webView.stage = this.stage;
    webView.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight/2);
    webView.loadURL("{URL}");
}

ありがとうございました。

4

2 に答える 2

1

@ブライアンありがとう。

StageWebView から html ソースコードを取得するためのトリッキーなコードを書きました。

私のコードがあります:

private var webView:StageWebView;
private var htmlSource:String;

protected function addedToStageHandler(event:Event):void
{
    webView = new StageWebView();
    webView.addEventListener(Event.COMPLETE,onWebViewComplete);
    webView.stage = this.stage;
    webView.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight/2);
    webView.loadURL("URL HERE");
}

protected function onWebViewComplete(event:Event):void
{
    getHtmlSource();
}

private function getHtmlSource():void
{
    var tempTitle:String = webView.title;
    webView.loadURL("javascript:document.title = document.getElementsByTagName('html')[0].innerHTML;");
    htmlSource = webView.title;
    webView.loadURL("javascript:document.title ='" + tempTitle + "';");
    trace("Title is "+webView.title)
    trace(htmlSource);
}

楽しい!:)

于 2013-12-20T11:34:10.393 に答える
0

Flex と StageWebView の間の通信は非常に原始的です。実際には、ブラウザlocationが変更されているという通知のみを受け取ります。

FlexCapacitor Webviewの使用を検討してください。これには、getSource()呼び出すことができる関数があります (また、StageWebView の管理も簡素化されます)。

于 2013-12-19T20:44:51.670 に答える