From 969a3729d5fc5c225e1ce84bfc01673d777a973d Mon Sep 17 00:00:00 2001 From: Jesus Fuentes Date: Tue, 3 Apr 2018 07:51:18 -0500 Subject: [PATCH] Update hoxt.md --- documentation/extensions/hoxt.md | 54 +++++++++++++++++--------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/documentation/extensions/hoxt.md b/documentation/extensions/hoxt.md index d3620bc6c..3d48e3d5e 100644 --- a/documentation/extensions/hoxt.md +++ b/documentation/extensions/hoxt.md @@ -3,7 +3,7 @@ HTTP over XMPP transport [Back](index.md) -Allows to transport HTTP communication over XMPP peer-to-peer networks. +Allows the transport of HTTP communication over XMPP peer-to-peer networks. * Discover HOXT support * IQ exchange @@ -23,7 +23,7 @@ Once you have your _**ServiceDiscoveryManager**_ you will be able to discover information associated with an XMPP entity. To discover the information of a given XMPP entity send **discoverInfo(entityID)** to your _**ServiceDiscoveryManager**_ where entityID is the ID of the entity. The -message **discoverInfo(entityID)** will answer an instance of +message **discoverInfo(entityID)** will answer with an instance of _**DiscoverInfo**_ that contains the discovered information. **Examples** @@ -33,10 +33,10 @@ In this example we can see how to check if the counterpart supports HOXT: ``` // Obtain the ServiceDiscoveryManager associated with my XMPPConnection ServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(connection); -// Get the information of a given XMPP entity -DiscoverInfo discoInfo = discoManager.discoverInfo("juliet@capulet.com"); +// Get the information of a given XMPP entity, where entityID is a Jid +DiscoverInfo discoInfo = discoManager.discoverInfo(entityID); // Check if room is HOXT is supported -discoInfo.containsFeature("urn:xmpp:http"); +boolean isSupported = discoInfo.containsFeature("urn:xmpp:http"); ``` IQ exchange ----------- @@ -44,53 +44,57 @@ IQ exchange **Description** You can use IQ's to perform HTTP requests and responses. This is applicable to -relatively short requests and responses (due to limitation of XMPP message +relatively short requests and responses (due to the limitation of XMPP message size). **Usage** -First you need to register a _**PacketListener**_ to be able to handle +First you need to register a _**StanzaListener**_ to be able to handle intended IQs. For the HTTP client you: * You create and send _**HttpOverXmppReq**_ request. - * Then you handle the _**HttpOverXmppResp**_ response in your _**PacketListener**_. + * Then you handle the _**HttpOverXmppResp**_ response in your _**StanzaListener**_. + For the HTTP server you: - * You handle the _**HttpOverXmppReq**_ requests in your _**PacketListener**_. + * You handle the _**HttpOverXmppReq**_ requests in your _**StanzaListener**_. * And create and send _**HttpOverXmppResp**_ responses. **Examples** -In this example we are HTTP client, so we send request (POST) and handle the +In this example we are an HTTP client, so we send a request (POST) and handle the response: ``` // create a request body String urlEncodedMessage = "I_love_you"; -// create request -HttpOverXmppReq req = new HttpOverXmppReq(HttpMethod.POST, "/mailbox"); -req.setVersion("1.1"); - // prepare headers -List
list = new ArrayList
(); -list.add(new Header("Host", "juliet.capulet.com")); -list.add(new Header("Content-Type", "application/x-www-form- urlencoded")); -list.add(new Header("Content-Length", Integer.toString(urlEncodedMessage.length()))); -req.setHeaders(new HeadersExtension(list)); +List
headers = new ArrayList<>(); +headers.add(new Header("Host", "juliet.capulet.com")); +headers.add(new Header("Content-Type", "application/x-www-form-urlencoded")); +headers.add(new Header("Content-Length", Integer.toString(urlEncodedMessage.length()))); // provide body or request (not mandatory, - empty body is used for GET) AbstractHttpOverXmpp.Text child = new AbstractHttpOverXmpp.Text(urlEncodedMessage); AbstractHttpOverXmpp.Data data = new AbstractHttpOverXmpp.Data(child); -req.setData(data); -// add to -req.setTo("juliet@capulet.com/balcony"); +// create request +HttpOverXmppReq req = HttpOverXmppReq.buider() + .setMethod(HttpMethod.POST) + .setResource("/mailbox") + .setHeaders(headers) + .setVersion("1.1") + .setData(data) + .build(); + +// add to, where jid is the Jid of the individual the packet is sent to +req.setTo(jid); // send it -connection.sendIqWithResponseCallback(req, new PacketListener() { +connection.sendIqWithResponseCallback(req, new StanzaListener() { public void processStanza(Stanza iq) { HttpOverXmppResp resp = (HttpOverXmppResp) iq; // check HTTP response code @@ -99,10 +103,10 @@ connection.sendIqWithResponseCallback(req, new PacketListener() { NamedElement child = resp.getData().getChild(); // check which type of content of the response arrived if (child instanceof AbstractHttpOverXmpp.Xml) { - // print the message and anxiously read if from console ;) + // print the message and anxiously read if from the console ;) System.out.println(((AbstractHttpOverXmpp.Xml) child).getText()); } else { - // process other AbstractHttpOverXmpp.DataChild subtypes + // process other AbstractHttpOverXmpp data child subtypes } } }