2008-09-11 24 views
3

Basit bir soru, ancak birisi JBoss Seam çerçevesinde bir web servisini nasıl arayacağı ve sonuçları nasıl işleyeceği konusunda örnek kod verebilir mi?Seam'dan Web Hizmeti Çağrılması

Bir web servisi olarak işlevselliğini açığa çıkaran özel bir satıcı tarafından sağlanan bir arama platformuna entegre olabilmem gerekiyor. Yani, sadece belirli bir web servisini aramak için kodun nasıl görüneceğine dair bir rehber arıyorum.

(Herhangi örnek web hizmeti örnek olarak seçilebilir.)

cevap

1

Orada Restlet bundan biraz daha fazladır (kabaca bir gajillion HTTP istemci kütüphaneleri, ama ben zaten vardı Başka bir şey için bu kod snippet'i), ancak GET isteklerini göndermek için hepsi destek sağlamalıdır. Burada, Apache Commons:

HttpClient client = new HttpClient(); 
HttpMethod method = new GetMethod("http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=restbook&query=HttpClient"); 
client.executeMethod(method); 
adresinden HttpClient kullanan daha az dikkatli bir kod parçacığı vardır.
0
import org.restlet.Client; 
import org.restlet.data.Protocol; 
import org.restlet.data.Reference; 
import org.restlet.data.Response; 
import org.restlet.resource.DomRepresentation; 
import org.w3c.dom.Node; 

/** 
* Uses YAHOO!'s RESTful web service with XML. 
*/ 
public class YahooSearch { 
    private static final String BASE_URI = "http://api.search.yahoo.com/WebSearchService/V1/webSearch"; 

    public static void main(final String[] args) { 
     if (1 != args.length) { 
      System.err.println("You need to pass a search term!"); 
     } else { 
      final String term = Reference.encode(args[0]); 
      final String uri = BASE_URI + "?appid=restbook&query=" + term; 
      final Response response = new Client(Protocol.HTTP).get(uri); 
      final DomRepresentation document = response.getEntityAsDom(); 

      document.setNamespaceAware(true); 
      document.putNamespace("y", "urn:yahoo:srch"); 

      final String expr = "/y:ResultSet/y:Result/y:Title/text()"; 
      for (final Node node : document.getNodes(expr)) { 
       System.out.println(node.getTextContent()); 
      } 
     } 
    } 
} 

Bu kod Yahoo'nun RESTful arama hizmetine bir istek yapmak Restlet kullanır. Açıkçası, kullandığınız web servisinin ayrıntıları müşterinizin neye benzediğini belirleyecektir. Ben doğru anlamak eğer web hizmeti fiili çağrı yanıtı bu satırdan sonra uygun bir biçimine dönüştürülür ve manipüle edilir, yapılıyor nerede

0
final Response response = new Client(Protocol.HTTP).get(uri); 

Yani, yukarıdaki çizgidir.

Restlet'i kullanmadığımı varsayarsak, bu çizgi nasıl farklı olur?
(yani belirli bir oluyor böylece Tabii ki, gerçek işlem kodu, hem de önemli ölçüde farklı olurdu.)