2011-12-19 2 views
1

에서 연결 데이터를 읽고, 그것은 다음과 같습니다플래시 HTTPService를 : 나는 내 HTTPService를이 속성 파일

<s:HTTPService 
     id="setCustomerInstalledPackageService" 
     url="http://localhost:8090/myapp/servletName" 
     useProxy="false" method="POST" 
     resultFormat="text" 
     result="onResult(event)" 
     fault="fault(event)"> 
    </s:HTTPService> 


내가 속성 파일에서 호스트 및 포트를 읽고이 코드는 더 다양한 만들고 싶어. 이 방법으로 내 웹 서비스의 호스트 (또는 포트)를 변경하면 플래시 소스를 다시 컴파일 할 필요가 없습니다.
웹을 조금 검색했지만 대답을 찾을 수 없습니다 ... 누구입니까?

감사합니다.

+1

분명히 제대로 검색하지 못했습니다. 당신이해야 할 일은 : xml 또는 csv 또는 소프트 코드 할 데이터가있는 파일을 가지고 있어야합니다. 프로그램을 실행할 때이 파일을 읽고 파싱하여 데이터를 얻은 다음'setCustomerInstalledPackageService.url' 파일로 설정하고 설정하십시오. –

+0

감사합니다 @PranavHosangadi; 그것은 나를 조금 도와 줬다. 그러나, 나는 "완벽한 해결책"을 찾고 있었는데, 정확히 어떻게 파일에서 읽었는지, 값을 설정했는지 등등을 의미했습니다. 해결책을 발견하고 대답으로 여기에 썼습니다. 당신은 한 번 봐 주시고, 당신이 의견이나 더 좋은 아이디어를 가지고 계신지 볼 수 있습니까? – OhadR

답변

4

가장 세련된 솔루션인지는 확실하지 않습니다. 누군가가 더 좋은 방법을 알고 있다면 나는 배울 것이 기쁘다. 주요 아이디어는 나중에 대체 할 수있는 고유 한 문자열로 을 선언하는 것입니다. 제 경우에는 __ 호스트 ____ 포트 __을 사용했습니다. 구성 파일을 읽은 후에는이 문자열을 파일에서 가져온 값으로 바꿉니다.

Main.mxml

:

<s:HTTPService 
    id="myService" 
    url="http://__host__:__port__/appName/..." 
    useProxy="false" method="POST" resultFormat="text" 
    result="onResult(event)" 
    fault="fault(event)"> 
    <mx:request xmlns=""> 
     <method>search</method> 
     <input>{input.text}</input> 
    </mx:request>   
</s:HTTPService> 

과 서비스 설정 :

private function initApp():void 
{ 
    var ldr:URLLoader = new URLLoader(); 
    ldr.addEventListener(Event.COMPLETE, onLoadPropsFile); 
    ldr.load(new URLRequest("service-config.txt")); 
} 

private function onLoadPropsFile(e:Event):void 
{ 
    var host:String; 
    var port:String; 

    var loadedText:String = URLLoader(e.target).data; 
    var array:Array = loadedText.split('\r\n'); 
    for each(var entry:String in array) 
    { 
     var keyValuePair:Array = entry.split('='); 
     var key:String = keyValuePair[0]; 
     var val:String = keyValuePair[1]; 
     if(key == 'host') 
     { 
      host = val; 
     } 
     if(key == 'port') 
     { 
      port = val; 
     } 
    } 
    var value:Number = Number(loadedText); 

    resolveServiceUrl(myService, host, port); 
} 

private function resolveServiceUrl(service:HTTPService, host:String, port:String):void 
{ 
    service.url = service.url.replace('__host__', host); 
    service.url = service.url.replace('__port__', port); 
} 

initApp()가

<s:Application xmlns:... 
      ... 
      initialize="initApp();" > 

서비스에 의해 호출이 방법을 선언했다. txt는 매우 간단합니다.

host=localhost 
port=8090 

누군가가 도움이되기를 바랍니다.

+1

+1 좋은 직장! 보시다시피, 조금만 보시면 언제나 당신이 원하는 것을 얻을 수 있습니다 :) –