2008-09-25 5 views
0

나는 플렉스를 사용하여 휴식 서비스에 연결합니다. 예를 들어, 주문 번호 32에 액세스하려면 URL http://[service]/orders/32을 호출 할 수 있습니다. URL 을 대상으로 구성해야합니다. 클라이언트는 서비스의 다른 인스턴스에 연결하기 때문입니다. 이 모든 것은 GET, PUT, DELETE 및 POST 호출을 포함하기 때문에 Blaze Proxy를 사용합니다. 문제는 다음과 같습니다. - HttpService를 사용할 때 대상의 끝에 "32"를 어떻게 추가합니까? 내가하는 모든 일은 대상을 설정하는 것이며, 어느 시점에서 이것은 URL로 변환됩니다. 코드를 추적했지만 어디에서이 코드를 수행했는지 모릅니다. 따라서이를 대체 할 수 없습니다.플렉스 HttpService : 대상에 추가

옵션 : 1. 대상을 Flex 클라이언트 내의 URL로 확인한 다음 추가 된 데이터가있는 URL을 URL로 설정합니다. ? 2. 다음과 같은 URL로 내 자신의 표준 프록시를 우선 자바 플렉스 어댑터 및지도 매개 변수를 쓰기 : 사람이하기 전에이 문제를 건너했습니다 http://[service]/order/ {ID} ID = 32 http://[service]/order/32

, 그리고 거기 어떤 간단한 방법으로 이것을 해결할 수 있습니까?

답변

0

클릭 이벤트 핸들러를 통해 Flex 내의 HTTPService에 대한 URL을 간단하게 확인할 수 있습니다. 여기 그런

<mx:HTTPService 
    id="UCService" 
    result="UCServiceHandler(event)" 
    showBusyCursor="true" 
    resultFormat="e4x" 
    /> 

핸들러입니다 : 여기

는 서비스의

 private function UCmainHandler(UCurl:String) { 

      UCService.url = UCurl; 
      UCService.send(); 

     } 

그리고 여기 샘플 클릭 이벤트입니다 :

물론
<mx:Button label="add to cart" click="UCmainHandler('http://sampleurl.com/cart/add/p18_q1?destination=cart')" /> 

당신이 다른 값을 전달할 수 클릭 처리기를 사용하거나 심지어 처리기가 다른 현재 설정 등을 기반으로 URL에 추가 할 수 있습니다.

희망 하시겠습니까? 내가

public MyHTTPProxyAdapter extends flex.messaging.services.http.HTTPProxyAdapter { 

public Object invoke(Message message) { 
    // modify the message - if required 
    process(message); 
    return super.invoke(message); 
} 

private void process(Message message) { 
     HTTPMessage http = (HTTPMessage)message; 
     if(http != null) { 
      String url = http.getUrl(); 
      ASObject o = (ASObject)http.getBody(); 
      if(o != null) { 
       Set keys = o.keySet(); 
       Iterator it = keys.iterator(); 
       while(it.hasNext()) { 
        String key = (String)it.next(); 
        String token = "[" + key +"]"; 
        if(url.contains(token)) { 
         url = url.replace(token, o.get(key).toString()); 
         o.remove(key); 
        } 

       } 
       http.setUrl(url); 
      } 
     } 
    } 
} 

그런 다음 내 어댑터에 대상 어댑터를 대체 서버에 사용자 정의 HTTPProxyAdapter을 만들어

:

+0

proxy-config.xml에서 대상으로 구성된 URL을 수정할 수 있기를 원합니다. 불행히도 실제 구성을 수정하고 수정하지 않으면 응용 프로그램에서 URL을 사용할 수 없습니다. – Verdant

1

그냥 그래서 모든 사람들이 내가이 문제를 해결하는 방법이다, 알고있다. 사용자 getbytoken 및 매개 변수 {ID로 대상을 설정,이 예에서

<destination id="user-getbytoken"> 
     <properties> 
      <url>http://localhost:8080/myapp/public/client/users/token/[id]</url> 
     </properties> 
</destination> 

: 는 지금 쿼리 문자열로 대체됩니다 config.xml에 대괄호에서 아무것도에 다음 URL을 사용할 수 있습니다 : 123}은 http://localhost:8080/myapp/public/client/users/token/123의 URL을 가져옵니다.

관련 문제