2015-04-21 22 views
5

Se si guarda sotto è il mio carico utile sta per server quando ho fatto una chiamata RPC nella mia applicazioneGWT richiesta payload comprensione

7|0|14|http://domain.com/ager-online/tracklay/|7FCCBC6F7B44BB2BEB84AAB8B47DB2E4|com.d.g4.consumer.w.client.rpcservice.ConsumerService|placeService|java.util.List|java.util.ArrayList/4159755760|co.g.consumer.wager.client.model.ConsumernseType/2494043886|java.lang.Double/858496421|java.lang.Integer/3438268394|2|1|WIN|java.lang.Long/4227064769|java.util.Date/3385151746|1|2|3|4|1|5|6|1|7|8|2|8|2|9|1|10|11|11|12|13|Co3|14|**Uzc1OKs**|9|309158|-5|

So che il suo essere serializzato e l'invio dei dati al server. Quello che voglio sapere sono le chiavi in ​​mezzo. come Uzc1OKs Li ho contrassegnati nella richiesta.

Che cosa sono esattamente?

Qualche idea?

+1

Aggiungere la firma del metodo della procedura remota che si sta chiamando. – Baz

+1

Hai * fatto * qualche ricerca prima di fare questa domanda? GWT è open source e dovrebbe essere abbastanza facile rintracciare il "colpevole" - controlla le classi generate dalle tue interfacce '* Async' dal compilatore GWT, vedi quali classi sono usate lì e segui il percorso fino a trovare lo schema di serializzazione . O google in giro ... –

risposta

1

È possibile utilizzare GWT RPC nel seguente modo sul client:

La creazione di un servizio di

private void refreshWatchList() { 
    final double MAX_PRICE = 100.0; // $100.00 
    final double MAX_PRICE_CHANGE = 0.02; // +/- 2% 

    StockPrice[] prices = new StockPrice[stocks.size()]; 
    for (int i = 0; i < stocks.size(); i++) { 
     double price = Random.nextDouble() * MAX_PRICE; 
     double change = price * MAX_PRICE_CHANGE 
      * (Random.nextDouble() * 2.0 - 1.0); 

     prices[i] = new StockPrice(stocks.get(i), price, change); 
    } 

    updateTable(prices); 
    } 

Definire il servizio

@RemoteServiceRelativePath("stockPrices") 
public interface StockPriceService extends RemoteService { 

     StockPrice[] getPrices(String[] symbols); 
} 

Implementare il servizio

public class StockPriceServiceImpl extends RemoteServiceServlet implements StockPriceService { 

    public StockPrice[] getPrices(String[] symbols) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

Invocare il servizio da parte del cliente e di effettuare la chiamata di procedura remota:

private ArrayList<String> stocks = new ArrayList<String>(); 
private StockPriceServiceAsync stockPriceSvc = GWT.create(StockPriceService.class); 

private void refreshWatchList() { 
    // Initialize the service proxy. 
    if (stockPriceSvc == null) { 
     stockPriceSvc = GWT.create(StockPriceService.class); 
    } 

    // Set up the callback object. 
    AsyncCallback<StockPrice[]> callback = new AsyncCallback<StockPrice[]>() { 
     public void onFailure(Throwable caught) { 
     // TODO: Do something with errors. 
     } 

     public void onSuccess(StockPrice[] result) { 
     updateTable(result); 
     } 
    }; 

    // Make the call to the stock price service. 
    stockPriceSvc.getPrices(stocks.toArray(new String[0]), callback); 
} 

Questo è fondamentalmente ciò che RPC è fatto.

vostri

chiavi in ​​mezzo

è probabilmente il risultato di serializzazione oggetti. Se non ti piace, puoi anche utilizzare il GWT RequestBuilder.

RequestBuilder requestBuilder = new RequestBuilder(requestMethod, url); 
requestBuilder.setHeader("Content-Type", "application/json"); 
requestBuilder.setRequestData(bodyString); 
requestBuilder.setCallback(new RequestCallback() { 

     @Override 
     public void onResponseReceived(Request request, Response response) { 
     callback.onResponse(response.getStatusCode(), response.getText()); 
     } 

     @Override 
     public void onError(Request request, Throwable exception) { 
     callback.onError(new Exception(exception)); 
     } 
    }); 

    try { 
     requestBuilder.send(); 
    } 
    catch(RequestException ex) { 
     callback.onError(ex); 
    } 

Quando si utilizza RequestBuilder si ha un maggiore controllo del formato e di ciò che viene trasportato.

0

GWT utilizza i buffer di protocollo come meccanismo di serializzazione per impostazione predefinita. È possibile trovare ulteriori informazioni qui: Protocol Buffers