XHR2.send(method, url, options)
Makes synchronous HTTP requests to a web server and retrieve any type of data directly back into the script.
#Parameters Summary This method has the following parameters:
Parameters | Description |
---|---|
method |
HTTP method name.
|
url |
String with resource URL. |
options |
JSON object with additional request parameters. The options are:
|
#Response
The method has the following general JSON response structure:
{
"status": "<response_status>",
"headers": {
"[ <header1> : <value1>, ]": "",
"[ <header2> : <value2>, ... ]": ""
},
"body": "<response_body>"
}
Response has the following parameters:
Paremeter | Description |
---|---|
status |
HTTP response status code. |
headers |
JSON object with response headers. |
body |
String with response body. It can be JSON object if value of header Content-Type is application/json and response body is a valid JSON object. It can be byte array if **isRawResponse **is set to true. |
#Examples
GET Request
The following example sends the HTTP GET request to the Google Geocoding service.
var url = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false";
var response = XHR2.send("GET", url, {});
console.log(response);
{
"status": 200,
"headers": {
"x-frame-options": "SAMEORIGIN",
"content-type": "application/json; charset=UTF-8",
"cache-control": "public, max-age=86400",
"x-xss-protection": "1; mode=block",
"expires": "Thu, 14 Jul 2016 20:52:11 GMT",
"access-control-allow-origin": "*",
"content-length": 527,
"server": "mafe",
"content-encoding": "gzip",
"date": "Wed, 13 Jul 2016 20:52:11 GMT",
"vary": "Accept-Language"
},
"body": "{\n \"results\" : [\n {\n \"address_components\" : [\n {\n \"long_name\" : \"1600\",\n \"short_name\" : \"1600\",\n \"types\" : [ \"street_number\" ]\n },\n {\n \"long_name\" : \"Amphitheatre Parkway\",\n \"short_name\" : \"Amphitheatre Pkwy\",\n \"types\" : [ \"route\" ]\n },\n {\n \"long_name\" : \"Mountain View\",\n \"short_name\" : \"Mountain View\",\n \"types\" : [ \"locality\", \"political\" ]\n },\n {\n \"long_name\" : \"Santa Clara County\",\n \"short_name\" : \"Santa Clara County\",\n \"types\" : [ \"administrative_area_level_2\", \"political\" ]\n },\n {\n \"long_name\" : \"California\",\n \"short_name\" : \"CA\",\n \"types\" : [ \"administrative_area_level_1\", \"political\" ]\n },\n {\n \"long_name\" : \"United States\",\n \"short_name\" : \"US\",\n \"types\" : [ \"country\", \"political\" ]\n },\n {\n \"long_name\" : \"94043\",\n \"short_name\" : \"94043\",\n \"types\" : [ \"postal_code\" ]\n }\n ],\n \"formatted_address\" : \"1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA\",\n \"geometry\" : {\n \"location\" : {\n \"lat\" : 37.422364,\n \"lng\" : -122.084364\n },\n \"location_type\" : \"ROOFTOP\",\n \"viewport\" : {\n \"northeast\" : {\n \"lat\" : 37.4237129802915,\n \"lng\" : -122.0830150197085\n },\n \"southwest\" : {\n \"lat\" : 37.42101501970851,\n \"lng\" : -122.0857129802915\n }\n }\n },\n \"place_id\": \"ChIJ2eUgeAK6j4ARbn5u_wAGqWA\",\n \"types\": [\"street_address\"]\n }\n ],\n \"status\": \"OK\"\n}\n"
}
GET Request
This example is the same as the first one but now only printing body as JSON.
var url = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false";
var response = XHR2.send("GET", url, {});
console.log(response.body);
{
"results": [{
"address_components": [{
"long_name": "1600",
"short_name": "1600",
"types": ["street_number"]
}, {
"long_name": "Amphitheatre Parkway",
"short_name": "Amphitheatre Pkwy",
"types": ["route"]
}, {
"long_name": "Mountain View",
"short_name": "Mountain View",
"types": ["locality", "political"]
}, {
"long_name": "Santa Clara County",
"short_name": "Santa Clara County",
"types": ["administrative_area_level_2", "political"]
}, {
"long_name": "California",
"short_name": "CA",
"types": ["administrative_area_level_1", "political"]
}, {
"long_name": "United States",
"short_name": "US",
"types": ["country", "political"]
}, {
"long_name": "94043",
"short_name": "94043",
"types": ["postal_code"]
}],
"formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"geometry": {
"location": {
"lat": 37.422364,
"lng": -122.084364
},
"location_type": "ROOFTOP",
"viewport": {
"northeast": {
"lat": 37.4237129802915,
"lng": -122.0830150197085
},
"southwest": {
"lat": 37.42101501970851,
"lng": -122.0857129802915
}
}
},
"place_id": "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
"types": ["street_address"]
}],
"status": "OK"
}
Request with Basic Authentication
This example shows invoking an API that uses Basic Authentication. Basic Authentication usually has this form: http://username@[email protected]. To invoke this from a script add the Authorization header. The username@password encoding can be done using browser's console by running this code: window.btoa("username@password");
var url = "https://host.com/service"; // REST API URL
var XHRResponse = XHR2.send("GET", url, {
"headers": {
"Authorization": "Basic <encoded_string>"
}
});
Apperyio.response.success(XHRResponse.body, "application/json");
POST Request
The following examples sends an HTTP POST request to Mailgun API to send an email.
// Mailgun domain in the form: sandbox123abc.mailgun.org
var domain = "sandbox123abc.mailgun.org";
// Mailgun endpoint to send an email message
var url = "https://api.mailgun.net/v3/" + domain + "/messages";
var from = "Excited User <[email protected]>";
var to = request.get("to");
var subject = request.get("subject");
var text = request.get("text");
var XHRResponse = XHR2.send("POST", url, {
"parameters": {
"from": from,
"to": to,
"subject": subject,
"text": text
},
"headers": {
"Authorization": "Basic YXBpOmtleS0wY2UxNDM5ZGJiNjczOQ==" // For API key, see Mailgun domains page: https://mailgun.com/app/domains
}
});
Apperyio.response.success(XHRResponse.body, "application/json");
{
"message": "Queued. Thank you.",
"id": "<[email protected]>"
}
##Invoking an API Express Service
This examples show invoking an API Express service that dost a POST and its body is set to JSON such as {"param1": num}
.
var url = "https://api.appery.io/rest/1/apiexpress/api/test/me?apiKey=.....";
var XHRResponse = XHR2.send("POST", url, {
"headers": {
"Content-Type": "application/json"
},
"body": {"param1" : 45}
});
Apperyio.response.success(XHRResponse.body, "application/json");