2008-09-25 5 views
0

Я использую Flex для подключения к службе Rest. Например, для доступа к порядку № 32 я могу позвонить по адресу http://[service]/orders/32. URL должен быть настроен как пункт назначения - поскольку клиент будет подключаться к различным экземплярам службы. Все это использует прокси-сервер Blaze, поскольку он включает вызовы GET, PUT, DELETE и POST. Проблема заключается в следующем: - как мне добавить «32» в конец адресата при использовании HttpService? Все, что я делаю, - это назначение места назначения, и в какой-то момент оно преобразуется в URL-адрес. Я проследил код, но я не знаю, где это делается, поэтому он не может его заменить.Flex HttpService: добавление к назначению

Возможные варианты: 1. Разрешите адресату URL-адрес клиента Flex и затем укажите URL-адрес (с прилагаемыми данными) в качестве URL-адреса. 2. Напишите свой собственный Java Flex адаптер, который переопределяет стандартный прокси и параметры карты в URL, как следующие:? http://[service]/order/ {ID} ID = 32 к http://[service]/order/32

Кто-нибудь сталкивался с этой проблемой раньше, и есть любые простые способы решения этой проблемы?

ответ

0

Вот простой способ разрешить URL-адрес HTTPService внутри Flex через обработчик события click.

вот сервис:

<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-адресу на основе других текущих настроек и т. д. ...

Надеюсь, что это поможет!

+0

Я хочу, чтобы иметь возможность изменять URL-адрес, настроенный как пункт назначения в прокси-config.xml. К сожалению, URL-адрес недоступен для приложения, если я не работаю через фактическую конфигурацию и не изменяю ее – Verdant 2008-09-26 15:40:51

1

Просто так все знают, это то, как я решил эту проблему:

Я создал пользовательский HTTPProxyAdapter на сервере

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); 
      } 
     } 
    } 
} 

Затем заменил адаптер назначения для моего адаптера. теперь я могу использовать следующий URL-адрес в config.xml и ничего в квадратных скобках будет заменена строкой запроса:

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

В этом примере установки пункта назначения для пользовательского getbytoken и параметров {ID: 123} приведет к URL-адресу http://localhost:8080/myapp/public/client/users/token/123

 Смежные вопросы

  • Нет связанных вопросов^_^