body in the docs i am trying to send to the server : https://binance-docs.github.io/apidocs/spot/en/#order-book
// Start the asynchronous operation
void
run(
char const* host,
char const* port,
char const* target)
{
// Set SNI Hostname (many hosts need this to handshake successfully)
if(! SSL_set_tlsext_host_name(stream_.native_handle(), host))
{
beast::error_code ec{static_cast<int>(::ERR_get_error()), net::error::get_ssl_category()};
std::cerr << ec.message() << "\n";
return;
}
// Set up an HTTP GET request message
// req_.version(version);
req_.method(http::verb::get);
req_.target(target);
req_.set(http::field::host, host);
req_.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
req_.body() = "symbol=btcusdt";
req_.prepare_payload(); // make HTTP 1.1 compliant
// Look up the domain name
resolver_.async_resolve(
host,
port,
beast::bind_front_handler(
&session::on_resolve,
shared_from_this()));
}
As you can see req_.body() = "symbol=btcusdt";
clearly not working(which i got from stackoverflow), is there another way to do it ? I dont want to use boost json for sending the body, maybe could use jsoncpp. please help me and advance thanks!
CodePudding user response:
As you can see req_.body() = "symbol=btcusdt"; clearly not working(which i got from stackoverflow),
You didn't get that from StackOverflow. You did get:
req_.body() = serialize(json::object {{"symbol", "btcusdt"}});
req_.prepare_payload(); // make HTTP 1.1 compliant
Now if you somehow have an issue with that, you forgot to describe what the issue is.
As the commenter points out, it doesn't normally make sense to pass content with a GET request (background: HTTP GET with request body).
Checking the docs confirms it should be GET. So, then likely it expects query parameters. Poking at it with "/api/v3/depth?symbol=btcusdt"
gives
{"code":-1100,"msg":"Illegal characters found in parameter 'symbol'; legal range is '^[A-Z0-9-_.]{1,20}$'."}
shutdown: stream truncated
So, yeah, it reads those. "/api/v3/depth?symbol=BTCUSDT"
fixes the error:
{"lastUpdateId":18749392570,"bids":[["38337.57000000","2.48048000"],["38337.53000000","0.00391000"],["38336.74000000","0.03264000"],["38336.73000000","0.35211000"],["38336.72000000","0.13042000"],["38336.08000000","0.00455000"],["38335.00000000","0.09385000"],["38334.83000000","0.38462000"],["38334.82000000","0.39125000"],["38334.73000000","0.00052000"],["38334.69000000","0.00037000"],["38334.43000000","0.09528000"],["38333.01000000","0.00400000"],["38332.78000000","0.00037000"],["38332.71000000","0.01319000"],["38331.84000000","0.00833000"],["38331.46000000","0.39126000"],["38331.41000000","0.04000000"],["38330.93000000","0.39128000"],["38330.83000000","1.20000000"],["38330.33000000","0.24000000"],["38329.94000000","0.06407000"],["38329.90000000","0.06000000"],["38329.44000000","0.35216000"],["38329.39000000","0.39131000"],["38329.22000000","0.94299000"],["38327.88000000","0.01829000"],["38326.06000000","0.06000000"],["38325.76000000","0.01738000"],["38325.69000000","0.39133000"],["38324.82000000","0.02000000"],["38324.53000000","0.03771000"],["38323.43000000","0.01423000"],["38323.17000000","0.06352000"],["38323.01000000","0.11626000"],["38322.97000000","0.26100000"],["38322.82000000","1.95599000"],["38322.64000000","0.24845000"],["38322.36000000","0.00260000"],["38322.32000000","0.00187000"],["38322.27000000","0.23664000"],["38322.23000000","0.06000000"],["38321.90000000","0.24187000"],["38320.80000000","0.01048000"],["38320.70000000","0.00964000"],["38320.43000000","0.02202000"],["38320.39000000","0.09000000"],["38320.26000000","0.98600000"],["38320.00000000","0.05333000"],["38319.69000000","0.16310000"],["38319.59000000","0.03000000"],["38319.49000000","0.00037000"],["38319.45000000","0.06000000"],["38318.60000000","0.15000000"],["38318.41000000","0.02600000"],["38317.94000000","0.03086000"],["38317.57000000","0.00037000"],["38317.28000000","1.97450000"],["38317.18000000","0.01232000"],["38317.07000000","0.07704000"],["38316.71000000","0.01105000"],["38316.42000000","0.26120000"],["38316.41000000","0.03933000"],["38315.53000000","0.39000000"],["38315.05000000","2.51774000"],["38314.81000000","0.00903000"],["38314.59000000","0.34420000"],["38313.73000000","0.30000000"],["38313.60000000","0.03706000"],["38313.04000000","0.01234000"],["38312.79000000","0.00040000"],["38312.74000000","0.00160000"],["38312.64000000","0.03970000"],["38312.45000000","0.03989000"],["38311.93000000","0.00100000"],["38311.80000000","0.19965000"],["38311.68000000","0.03787000"],["38310.81000000","0.03086000"],["38310.79000000","0.00652000"],["38310.72000000","0.00180000"],["38310.39000000","0.07902000"],["38310.30000000","0.00027000"],["38310.16000000","0.00037000"],["38310.12000000","0.00100000"],["38310.00000000","0.05221000"],["38309.42000000","0.00505000"],["38309.29000000","0.02601000"],["38309.28000000","0.02601000"],["38309.27000000","0.02601000"],["38308.35000000","0.03918000"],["38308.24000000","0.00037000"],["38307.90000000","0.04000000"],["38307.60000000","0.00034000"],["38305.40000000","5.56346000"],["38304.47000000","0.87474000"],["38304.16000000","0.04030000"],["38304.00000000","0.09062000"],["38303.40000000","0.47680000"],["38303.29000000","0.28900000"],["38303.24000000","0.05433000"]],"asks":[["38337.58000000","0.59927000"],["38337.59000000","0.01654000"],["38338.13000000","0.00400000"],["38338.15000000","0.00900000"],["38340.27000000","0.00027000"],["38340.45000000","0.00037000"],["38342.37000000","0.00037000"],["38342.44000000","0.05200000"],["38343.93000000","0.01976000"],["38344.51000000","0.13042000"],["38345.19000000","0.44713000"],["38345.28000000","0.04998000"],["38345.43000000","0.26087000"],["38346.10000000","0.26089000"],["38346.12000000","0.26100000"],["38346.23000000","0.00991000"],["38346.24000000","0.04876000"],["38346.59000000","0.26086000"],["38347.13000000","0.01940000"],["38347.20000000","0.04705000"],["38347.40000000","0.26100000"],["38347.44000000","0.02478000"],["38347.45000000","0.00266000"],["38347.47000000","0.01491000"],["38347.66000000","0.07824000"],["38348.16000000","0.14054000"],["38348.48000000","0.26085000"],["38349.93000000","0.10000000"],["38350.00000000","0.00055000"],["38350.08000000","0.09146000"],["38350.33000000","0.00037000"],["38351.23000000","0.02553000"],["38352.00000000","0.17533000"],["38352.22000000","0.74700000"],["38352.40000000","0.26085000"],["38352.50000000","1.98993000"],["38352.75000000","0.00100000"],["38352.92000000","0.06000000"],["38353.92000000","0.09146000"],["38354.16000000","0.10000000"],["38355.10000000","0.10000000"],["38355.87000000","0.01829000"],["38356.19000000","0.12915000"],["38356.81000000","0.04000000"],["38358.94000000","0.10000000"],["38359.02000000","0.00187000"],["38359.04000000","0.57852000"],["38359.27000000","0.00037000"],["38359.66000000","0.09730000"],["38359.92000000","0.05000000"],["38360.00000000","0.26059000"],["38360.01000000","0.00525000"],["38360.65000000","0.00100000"],["38361.18000000","0.00037000"],["38361.83000000","0.10000000"],["38363.42000000","0.01940000"],["38363.81000000","0.00037000"],["38364.66000000","1.91518000"],["38364.88000000","0.02609000"],["38366.58000000","0.10000000"],["38366.60000000","0.14645000"],["38366.82000000","0.02601000"],["38366.83000000","0.02601000"],["38366.84000000","0.02601000"],["38367.18000000","0.00037000"],["38367.47000000","0.00140000"],["38368.35000000","0.22000000"],["38368.59000000","0.01301000"],["38368.91000000","0.01824000"],["38369.10000000","0.00037000"],["38369.61000000","0.00170000"],["38370.00000000","0.05214000"],["38370.30000000","0.00652000"],["38370.40000000","0.01105000"],["38370.69000000","0.00050000"],["38370.81000000","0.15840000"],["38371.11000000","0.03086000"],["38371.18000000","0.00410000"],["38371.49000000","0.00037000"],["38372.35000000","0.07818000"],["38372.98000000","0.03978000"],["38373.12000000","1.05945000"],["38373.20000000","0.03086000"],["38373.67000000","0.06000000"],["38373.95000000","0.03000000"],["38374.04000000","0.05434000"],["38374.19000000","1.48075000"],["38374.41000000","0.05447000"],["38374.55000000","0.09000000"],["38374.64000000","0.00902000"],["38374.80000000","0.00120000"],["38374.91000000","0.26059000"],["38374.92000000","4.97054000"],["38375.05000000","0.00357000"],["38375.26000000","0.00050000"],["38375.61000000","6.50000000"],["38376.62000000","0.04173000"],["38376.97000000","1.48075000"],["38378.17000000","0.03908000"],["38378.18000000","0.06270000"]]}
Proper Solution
You should add the query parameters. Beast doesn't have facilities for that:
It is the caller's responsibility to ensure that the request target string follows the syntax rules for URIs used with HTTP. In particular, reserved or special characters must be url-encoded. The implementation does not perform syntax checking on the passed string.
So consider using something like e.g. Boost URL:
static boost::url_view const base_api{"wss://api.binance.com/api/v3/"};
boost::url method{"depth"};
method.params().emplace_back("symbol", "BTCUSDT");
std::make_shared<session>(net::make_strand(ioc), ctx)
->run(make_url(base_api, method));
Where make_url
is a convenience wrapper around boost::urls::resolve
:
boost::url make_url(boost::url_view base_api, boost::url_view method) {
assert(!method.is_path_absolute());
assert(base_api.data()[base_api.size() - 1] == '/');
boost::urls::error_code ec;
boost::url url;
resolve(base_api, method, url, ec);
if (ec)
throw boost::system::system_error(ec);
return url;
}
Which allows some simplification in run
as well:
run(boost::url_view url) {
std::string const host(url.host());
std::string const service = url.has_port() //
? url.port()
: (url.scheme_id() == boost::urls::scheme::wss) //
? "https"
: "http";
url.remove_origin(); // becomes target
Full Listing
#include <boost/asio.hpp>
#include <boost/beast.hpp>
#include <boost/beast/ssl.hpp>
#include <boost/json.hpp>
#include <boost/json/src.hpp>
#include <functional>
#include <iostream>
#include <memory>
#include <string>
#include <boost/url.hpp>
#include <boost/url/src.hpp> // for "header-only"
namespace beast = boost::beast; // from <boost/beast.hpp>
namespace http = beast::http; // from <boost/beast/http.hpp>
namespace net = boost::asio; // from <boost/asio.hpp>
namespace ssl = boost::asio::ssl; // from <boost/asio/ssl.hpp>
namespace json = boost::json;
using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp>
using executor = net::any_io_executor; // boost 1.78 compat, comment if not applicable
//------------------------------------------------------------------------------
boost::url make_url(boost::url_view base_api, boost::url_view method) {
assert(!method.is_path_absolute());
assert(base_api.data()[base_api.size() - 1] == '/');
boost::urls::error_code ec;
boost::url url;
resolve(base_api, method, url, ec);
if (ec)
throw boost::system::system_error(ec);
return url;
}
// Report a failure
void
fail(beast::error_code ec, char const* what)
{
std::cerr << what << ": " << ec.message() << "\n";
}
// Performs an HTTP GET and prints the response
class session : public std::enable_shared_from_this<session>
{
tcp::resolver resolver_;
beast::ssl_stream<beast::tcp_stream> stream_;
beast::flat_buffer buffer_; // (Must persist between reads)
http::request<http::string_body> req_;
http::response<http::string_body> res_;
public:
explicit session(executor ex, ssl::context& ctx)
: resolver_(ex)
, stream_(ex, ctx) {}
// Start the asynchronous operation
void
run(boost::url url) {
std::string const host(url.host());
std::string const service = url.has_port() //
? url.port()
: (url.scheme_id() == boost::urls::scheme::wss) //
? "https"
: "http";
url.remove_origin(); // becomes req_.target()
// Set SNI Hostname (many hosts need this to handshake successfully)
if(! SSL_set_tlsext_host_name(stream_.native_handle(), host.c_str()))
{
beast::error_code ec{static_cast<int>(::ERR_get_error()), net::error::get_ssl_category()};
std::cerr << ec.message() << "\n";
return;
}
// Set up an HTTP GET request message
// req_.version(version);
req_.method(http::verb::get);
req_.target(url.c_str());
req_.set(http::field::host, host);
req_.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
//req_.body() = serialize(json::object {{"symbol", "btcusdt"}});
req_.prepare_payload(); // make HTTP 1.1 compliant
// Look up the domain name
resolver_.async_resolve(host, service,
beast::bind_front_handler(&session::on_resolve,
shared_from_this()));
}
void
on_resolve(
beast::error_code ec,
tcp::resolver::results_type results)
{
if(ec)
return fail(ec, "resolve");
// Set a timeout on the operation
beast::get_lowest_layer(stream_).expires_after(std::chrono::seconds(30));
// Make the connection on the IP address we get from a lookup
beast::get_lowest_layer(stream_).async_connect(
results,
beast::bind_front_handler(
&session::on_connect,
shared_from_this()));
}
void
on_connect(beast::error_code ec, tcp::resolver::results_type::endpoint_type)
{
if(ec)
return fail(ec, "connect");
// Perform the SSL handshake
stream_.async_handshake(
ssl::stream_base::client,
beast::bind_front_handler(
&session::on_handshake,
shared_from_this()));
}
void
on_handshake(beast::error_code ec)
{
if(ec)
return fail(ec, "handshake");
// Set a timeout on the operation
beast::get_lowest_layer(stream_).expires_after(std::chrono::seconds(30));
// Send the HTTP request to the remote host
std::cout << "Sending " << req_ << std::endl;
http::async_write(stream_, req_,
beast::bind_front_handler(
&session::on_write,
shared_from_this()));
}
void
on_write(
beast::error_code ec,
std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if(ec)
return fail(ec, "write");
// Receive the HTTP response
http::async_read(stream_, buffer_, res_,
beast::bind_front_handler(
&session::on_read,
shared_from_this()));
}
void
on_read(
beast::error_code ec,
std::size_t bytes_transferred)
{
boost::ignore_unused(bytes_transferred);
if(ec)
return fail(ec, "read");
// Write the message to standard out
std::cout << res_ << std::endl;
// Set a timeout on the operation
beast::get_lowest_layer(stream_).expires_after(std::chrono::seconds(30));
// Gracefully close the stream
stream_.async_shutdown(
beast::bind_front_handler(
&session::on_shutdown,
shared_from_this()));
}
void
on_shutdown(beast::error_code ec)
{
if(ec == net::error::eof)
{
// Rationale:
// http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error
ec = {};
}
if(ec)
return fail(ec, "shutdown");
// If we get here then the connection is closed gracefully
}
};
//------------------------------------------------------------------------------
int main() {
// The io_context is required for all I/O
net::io_context ioc;
// The SSL context is required, and holds certificates
ssl::context ctx{ssl::context::tlsv12_client};
// Verify the remote server's certificate
ctx.set_verify_mode(ssl::verify_peer);
ctx.set_default_verify_paths();
// Launch the asynchronous operation
// see for endpoints: https://binance-docs.github.io/apidocs/spot/en/#general-info
static boost::url_view const base_api{"wss://api.binance.com/api/v3/"};
boost::url method{"depth"};
method.params().emplace_back("symbol", "BTCUSDT");
// The session is constructed with a strand to
// ensure that handlers do not execute concurrently.
std::make_shared<session>(net::make_strand(ioc), ctx)
->run(make_url(base_api, method));
// Run the I/O service. The call will return when
// the get operation is complete.
ioc.run();
}
Prints
url: wss://api.binance.com/api/v3/depth?symbol=BTCUSDT
url.host(): api.binance.com
url.encoded_path(): /api/v3/depth
url.encoded_origin(): wss://api.binance.com
url.encoded_query(): symbol=BTCUSDT
url.encoded_authority(): api.binance.com
Sending GET /api/v3/depth?symbol=BTCUSDT HTTP/1.1
Host: api.binance.com
User-Agent: Boost.Beast/322
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 6447
Connection: keep-alive
Date: Tue, 26 Apr 2022 22:47:24 GMT
Server: nginx
Vary: Accept-Encoding
x-mbx-uuid: 9e00433d-5123-472c-9bf1-10104394266d
x-mbx-used-weight: 1
x-mbx-used-weight-1m: 1
Strict-Transport-Security: max-age=31536000; includeSubdomains
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'self'
X-Content-Security-Policy: default-src 'self'
X-WebKit-CSP: default-src 'self'
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, OPTIONS
X-Cache: Miss from cloudfront
Via: 1.1 fa544a973edca8926f95609301f23b66.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: DUS51-P2
X-Amz-Cf-Id: NIOqhB8rrl5nqCo_-TBwYPkgPXdREtQY4PwIi441WxjKRMOoeBkERQ==
{"lastUpdateId":18749934602,"bids":[["38290.70000000","4.61843000"],["38290.69000000","0.00060000"],["38290.65000000","0.00416000"],["38290.34000000","0.35254000"],["38290.33000000","0.75000000"],["38289.79000000","0.13058000"],["38289.00000000","0.18264000"],["38288.82000000","0.39171000"],["38288.63000000","0.00052000"],["38288.62000000","0.29100000"],["38288.02000000","0.39173000"],["38288.01000000","0.13484000"],["38287.31000000","0.53725000"],["38286.71000000","0.01319000"],["38286.70000000","1.74256000"],["38285.48000000","0.04000000"],["38285.41000000","0.57240000"],["38284.97000000","5.41100000"],["38284.96000000","2.50745000"],["38284.95000000","0.00091000"],["38284.14000000","0.00100000"],["38283.95000000","0.00027000"],["38283.81000000","0.74700000"],["38283.72000000","0.39175000"],["38283.14000000","0.39177000"],["38283.04000000","0.06000000"],["38282.99000000","0.35261000"],["38282.81000000","2.41006000"],["38282.54000000","0.39178000"],["38281.24000000","0.00400000"],["38281.13000000","0.75000000"],["38281.00000000","0.10000000"],["38280.99000000","0.04000000"],["38280.84000000","0.01829000"],["38280.44000000","0.00027000"],["38280.00000000","0.05225000"],["38279.53000000","0.45585000"],["38279.21000000","0.06000000"],["38278.89000000","0.00029000"],["38278.76000000","0.12000000"],["38277.61000000","0.04000000"],["38276.08000000","0.08000000"],["38275.62000000","0.07982000"],["38275.48000000","0.00900000"],["38275.42000000","0.26100000"],["38275.38000000","0.06000000"],["38274.31000000","0.26100000"],["38274.29000000","0.00340000"],["38274.28000000","0.80417000"],["38274.24000000","0.44994000"],["38273.47000000","0.03000000"],["38273.43000000","0.12968000"],["38272.96000000","0.04102000"],["38272.86000000","0.03091000"],["38272.68000000","1.89237000"],["38271.97000000","0.01304000"],["38271.79000000","0.00416000"],["38271.73000000","0.00028000"],["38271.48000000","0.06000000"],["38271.40000000","0.00037000"],["38270.64000000","0.02600000"],["38270.63000000","0.00027000"],["38270.46000000","0.10000000"],["38270.45000000","0.75000000"],["38270.41000000","0.66800000"],["38270.00000000","0.05356000"],["38269.77000000","0.02615000"],["38269.76000000","0.02615000"],["38269.45000000","0.00037000"],["38269.44000000","0.09999000"],["38269.09000000","0.58398000"],["38269.02000000","0.07824000"],["38269.00000000","0.00169000"],["38268.92000000","0.31167000"],["38268.88000000","0.00306000"],["38268.83000000","0.02028000"],["38268.81000000","0.12271000"],["38268.36000000","0.39000000"],["38268.19000000","0.04166000"],["38267.89000000","1.93553000"],["38267.52000000","0.01041000"],["38267.31000000","0.00027000"],["38267.12000000","0.00037000"],["38266.66000000","0.04000000"],["38266.35000000","0.09000000"],["38265.65000000","0.75000000"],["38265.63000000","0.00037000"],["38265.60000000","0.00057000"],["38265.55000000","2.54224000"],["38265.39000000","0.15000000"],["38265.27000000","0.01047000"],["38265.20000000","0.10000000"],["38265.10000000","0.10000000"],["38264.94000000","0.03086000"],["38264.19000000","0.03086000"],["38263.48000000","0.03960000"],["38263.39000000","0.62956000"],["38262.53000000","0.02615000"],["38261.88000000","0.28928000"],["38261.84000000","0.00037000"]],"asks":[["38290.71000000","1.11417000"],["38290.73000000","0.59583000"],["38291.16000000","0.00900000"],["38291.98000000","0.02421000"],["38292.63000000","0.00522000"],["38293.95000000","0.00307000"],["38294.17000000","0.01310000"],["38294.30000000","0.00037000"],["38295.50000000","0.00037000"],["38296.22000000","0.75000000"],["38297.00000000","0.01469000"],["38297.16000000","0.75000000"],["38297.36000000","0.00041000"],["38297.42000000","0.00037000"],["38297.62000000","0.10660000"],["38298.13000000","0.00783000"],["38298.14000000","0.00339000"],["38298.18000000","0.61816000"],["38298.24000000","0.09585000"],["38298.32000000","0.01910000"],["38298.63000000","0.26119000"],["38299.00000000","0.01486000"],["38299.70000000","0.13057000"],["38300.00000000","24.61496000"],["38300.16000000","0.09585000"],["38300.85000000","0.12969000"],["38300.91000000","0.00037000"],["38301.48000000","0.26149000"],["38301.62000000","0.04340000"],["38302.08000000","0.14125000"],["38302.20000000","0.06000000"],["38302.69000000","0.01020000"],["38302.78000000","0.75000000"],["38302.84000000","0.04702000"],["38302.88000000","0.00037000"],["38303.04000000","0.04823000"],["38303.25000000","0.26118000"],["38303.30000000","0.00100000"],["38303.57000000","0.08000000"],["38304.00000000","0.14262000"],["38304.04000000","0.00100000"],["38304.10000000","0.25976000"],["38304.39000000","0.94299000"],["38304.80000000","0.00037000"],["38304.96000000","0.08314000"],["38305.04000000","0.00050000"],["38305.10000000","0.32000000"],["38305.16000000","0.07648000"],["38305.34000000","0.00040000"],["38305.66000000","0.10000000"],["38305.72000000","0.10000000"],["38306.19000000","0.26114000"],["38306.25000000","0.64000000"],["38306.48000000","0.00055000"],["38306.72000000","0.75000000"],["38306.73000000","0.26116000"],["38306.80000000","0.74700000"],["38306.91000000","0.07105000"],["38306.92000000","0.00260000"],["38307.06000000","1.93567000"],["38307.11000000","0.00037000"],["38307.55000000","0.01829000"],["38307.60000000","0.00034000"],["38309.64000000","0.03000000"],["38310.00000000","0.30197000"],["38310.15000000","0.01827000"],["38310.24000000","0.04923000"],["38310.30000000","0.00027000"],["38310.68000000","0.05000000"],["38310.76000000","0.05454000"],["38310.87000000","0.09141000"],["38311.29000000","0.00059000"],["38311.42000000","0.02300000"],["38311.64000000","0.01105000"],["38312.29000000","0.03939000"],["38313.03000000","0.00221000"],["38313.43000000","0.12801000"],["38313.57000000","1.97481000"],["38314.24000000","0.00052000"],["38314.34000000","0.75000000"],["38315.53000000","0.04020000"],["38315.56000000","0.02727000"],["38315.70000000","0.00064000"],["38315.78000000","0.00904000"],["38316.45000000","0.00074000"],["38316.80000000","0.06000000"],["38317.12000000","0.05453000"],["38317.26000000","0.12029000"],["38317.59000000","0.30000000"],["38317.61000000","0.00030000"],["38317.65000000","0.06813000"],["38318.20000000","0.24169000"],["38318.28000000","0.02581000"],["38318.56000000","0.31333000"],["38318.81000000","0.04102000"],["38318.82000000","0.03086000"],["38319.67000000","0.03086000"],["38319.98000000","0.00885000"],["38319.99000000","0.01051000"],["38320.00000000","0.05221000"]]}
shutdown: stream truncated