Примеры работы с API
Авторизация
Часть сервисов является общедоступной без авторизации, однако большая часть требует указать Api ключ и электронную подпись данных, передаваемых в запросах. API ключ и подпись передаются как HTTP заголовки "Api-key" и "Sign".Подпись формируется на основе HMAC-SHA256 алгоритма. В качестве ключа используется секретный ключ, выданный в момент генерации API ключа. Сгенерированная подпись должна быть переведена в шестнадцатеричный формат и верхний регистр.
Важно (!) Для построения строки подписи, параметры должны быть соединены в алфавитном порядке их имен. В противном случае, проверка электронной подписи не будет проходить.
CUrl
curl -w "\n%%{http_code}"\ -H "Api-Key: gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"\ -H "Sign: EA4AB0289512C3A65092321F9BF25058B84104F1D99D37D0D8BFC4CF7AF0F9CD"\ --data "price=60&quantity=1¤cyPair=BTC/USD"\ https://api.livecoin.net/exchange/buylimit
PHP
POST запрос
<?php $url = "https://api.livecoin.net/exchange/buylimit"; $apiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"; $secretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg"; $params = array( 'currencyPair'=> 'BTC/USD', 'price'=> 60, 'quantity'=>1 ); ksort($params); $postFields = http_build_query($params, '', '&'); $signature = strtoupper(hash_hmac('sha256', $postFields, $secretKey)); $headers = array( "Api-Key: $apiKey", "Sign: $signature" ); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 'POST'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($statusCode!=200) { //dump info: echo "Status code: $statusCode, response: $response"; //throw new Exception('Can not execute the query!'); } var_dump(json_decode($response));
GET запрос
<?php $url = "https://api.livecoin.net/exchange/client_orders"; $apiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"; $secretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg"; $params = array( 'currencyPair'=> 'BTC/USD' ); ksort($params); $fields = http_build_query($params, '', '&'); $signature = strtoupper(hash_hmac('sha256', $fields, $secretKey)); $headers = array( "Api-Key: $apiKey", "Sign: $signature" ); $ch = curl_init($url."?".$fields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($statusCode!=200) { //dump info: echo "Status code: $statusCode, response: $response"; //throw new Exception('Can not execute the query!'); } var_dump(json_decode($response));
Создание ваучеров
<?php $url = "https://api.livecoin.net/payment/voucher/make"; $apiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"; $secretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg"; $params = array( 'amount'=> '1', 'currency'=> 'USD', 'description'=>'test voucher' ); ksort($params); $postFields = http_build_query($params, '', '&'); $signature = strtoupper(hash_hmac('sha256', $postFields, $secretKey)); $headers = array( "Api-Key: $apiKey", "Sign: $signature" ); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 'POST'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($statusCode!=200) { //dump info: echo "Status code: $statusCode, response: $response"; //throw new Exception('Can not execute the query!'); } var_dump($response);
Java
POST запрос
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.TreeMap; import java.util.Map; public class ExtAPIExample { public static final java.lang.String HMAC_SHA256_ALGORITHM = "HmacSHA256"; public static final java.lang.String UNICODE_CODE = "UTF-8"; public static final String URL = "https://api.livecoin.net/exchange/buylimit"; // Это ваш Api key public static final String apiKey = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYY"; // Это ваш секретный ключ public static final String secKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; public static void main(String[] args) { try { Map<String, String> postData = new TreeMap<>(); postData.put("currencyPair", "BTC/USD"); postData.put("price", "60"); postData.put("quantity", "1"); String queryString = buildQueryString(postData); String signature = createSignature(queryString, secKey); URL queryUrl = new URL(URL); HttpURLConnection connection = (HttpURLConnection)queryUrl.openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Api-Key", apiKey); connection.setRequestProperty("Sign", signature); connection.getOutputStream().write(queryString.getBytes()); BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder sb = new StringBuilder(); String line; while ((line = rd.readLine()) != null) { sb.append(line + '\n'); } System.out.println(sb.toString()); } catch (Exception ex) { ex.printStackTrace(); } } private static String buildQueryString(Map<String, String> args) { StringBuilder result = new StringBuilder(); for (String hashKey : args.keySet()) { if (result.length() > 0) result.append('&'); try { result.append(URLEncoder.encode(hashKey, "UTF-8")) .append("=").append(URLEncoder.encode(args.get(hashKey), "UTF-8")); } catch (Exception ex) { ex.printStackTrace(); } } return result.toString(); } private static String createSignature(String paramData, String plainSecretKey) { try { SecretKeySpec secretKey = new SecretKeySpec(plainSecretKey.getBytes(UNICODE_CODE), HMAC_SHA256_ALGORITHM); Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM); mac.init(secretKey); byte[] hmacData = mac.doFinal(paramData.getBytes(UNICODE_CODE)); return byteArrayToHexString(hmacData).toUpperCase(); } catch (Exception e) { e.printStackTrace(); } return null; } private static String byteArrayToHexString(byte[] bytes) { final char[] hexArray = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] hexChars = new char[bytes.length * 2]; int v; for (int j = 0; j < bytes.length; j++) { v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } }
GET запрос
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class ExtAPIExample { public static void main(String[] args) { try { URL queryUrl = new URL("https://api.livecoin.net/exchange/order_book?currencyPair=LTC/BTC"); HttpURLConnection connection = (HttpURLConnection)queryUrl.openConnection(); connection.setDoOutput(true); BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder sb = new StringBuilder(); String line; while ((line = rd.readLine()) != null) { sb.append(line + '\n'); } System.out.println(sb.toString()); } catch (Exception ex) { ex.printStackTrace(); } } }
Ruby
POST запрос
require "net/http" require "uri" require 'openssl' require "base64" require "rubygems" require "json" uri = URI::parse("https://api.livecoin.net/exchange/buylimit") api_key = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" secret_key = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg" data = { 'currencyPair'=> 'BTC/USD', 'price'=>'100', 'quantity'=>'0.01' } sorted_data = data.sort_by { |key, value| key } sha256 = OpenSSL::Digest::SHA256.new signature = OpenSSL::HMAC.hexdigest(sha256, secret_key, URI.encode_www_form(sorted_data)).upcase request = Net::HTTP::Post.new(uri) request.set_form_data(sorted_data) request.add_field("Api-key", api_key) request.add_field("Sign", signature) response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl =>uri.scheme == 'https') {|http| http.request(request) } response_data = JSON.parse(response.body()) print response_data
GET запрос
require "net/http" require "uri" require 'openssl' require "base64" require "rubygems" require "json" uri = URI::parse("https://api.livecoin.net/exchange/client_orders") api_key = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" secret_key = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg" uri.query = URI.encode_www_form({ 'currencyPair'=> 'BTC/USD' }) sha256 = OpenSSL::Digest::SHA256.new signature = OpenSSL::HMAC.hexdigest(sha256, secret_key, uri.query).upcase request = Net::HTTP::Get.new(uri) request.add_field("Api-key", api_key) request.add_field("Sign", signature) response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl =>uri.scheme == 'https') {|http| http.request(request) } response_data = JSON.parse(response.body()) print response_data
Python 2.7
POST запрос
import httplib import urllib import json import hashlib import hmac from collections import OrderedDict server = "api.livecoin.net" method = "/exchange/buylimit" api_key = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" secret_key = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg" data = OrderedDict(sorted([('currencyPair', 'BTC/USD'),('price', '100'),('quantity', '0.01')])) encoded_data = urllib.urlencode(data) sign = hmac.new(secret_key, msg=encoded_data, digestmod=hashlib.sha256).hexdigest().upper() headers = {"Api-key": api_key, "Sign": sign, "Content-type": "application/x-www-form-urlencoded"} conn = httplib.HTTPSConnection(server) conn.request("POST", method, encoded_data, headers) response = conn.getresponse() data = json.load(response) conn.close() print data
GET запрос
import httplib import urllib import json import hashlib import hmac from collections import OrderedDict server = "api.livecoin.net" method = "/exchange/client_orders" api_key = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" secret_key = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg" data = OrderedDict([('currencyPair', 'BTC/EUR')]) encoded_data = urllib.urlencode(data) sign = hmac.new(secret_key, msg=encoded_data, digestmod=hashlib.sha256).hexdigest().upper() headers = {"Api-key": api_key, "Sign": sign} conn = httplib.HTTPSConnection(server) conn.request("GET", method + '?' + encoded_data, '', headers) response = conn.getresponse() data = json.load(response) conn.close() print data
C++
POST запрос
#include "stdafx.h" #using <mscorlib.dll> #using <System.dll> #using <System.Web.dll> using namespace System; using namespace System::Text; using namespace System::Web; using namespace System::Net; using namespace System::Security::Cryptography; using namespace System::IO; String^ ByteArrayToString(array<Byte>^ ba) { StringBuilder ^hex = gcnew StringBuilder(ba->Length * 2); for each (Byte b in ba) { hex->AppendFormat("{0:x2}", b); } return hex->ToString(); } String^ HashHMAC(String ^key, String ^message) { System::Text::UTF8Encoding ^encoding = gcnew System::Text::UTF8Encoding(); array<Byte> ^keyByte = encoding->GetBytes(key); HMACSHA256 ^hmacsha256 = gcnew HMACSHA256(keyByte); array<Byte> ^messageBytes = encoding->GetBytes(message); array<Byte> ^hashmessage = hmacsha256->ComputeHash(messageBytes); return ByteArrayToString(hashmessage); } String^ http_build_query(String^ formdata) { String ^str = formdata->Replace("/", "%2F"); str = str->Replace("@", "%40"); str = str->Replace(";", "%3B"); return str; } int _tmain(int argc, _TCHAR* argv[]) { String^ ApiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"; String^ SecretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg"; String^ param = http_build_query("currencyPair=BTC/USD&price=60&quantity=1"); String^ Sign = HashHMAC(SecretKey, param)->ToUpper(); String^ uri = "https://api.livecoin.net/exchange/buylimit"; String^ ResponseFromServer = ""; HttpStatusCode StatusCode; array<Byte> ^bytes = Encoding::UTF8->GetBytes(param); HttpWebRequest ^request = safe_cast<HttpWebRequest^>(WebRequest::Create(uri)); request->Method = "POST"; request->ContentType = "application/x-www-form-urlencoded"; request->ContentLength = bytes->Length; request->Headers["Api-Key"] = ApiKey; request->Headers["Sign"] = Sign; Stream ^dataStream = request->GetRequestStream(); dataStream->Write(bytes, 0, bytes->Length); try { WebResponse ^WebResponse = request->GetResponse(); dataStream = WebResponse->GetResponseStream(); StreamReader ^StreamReader = gcnew System::IO::StreamReader(dataStream); ResponseFromServer = StreamReader->ReadToEnd(); dataStream->Close(); WebResponse->Close(); StatusCode = HttpStatusCode::OK; } catch (WebException ^ex) { if (ex->Response != nullptr) { dataStream = ex->Response->GetResponseStream(); StreamReader ^StreamReader = gcnew System::IO::StreamReader(dataStream); StatusCode = (safe_cast<HttpWebResponse^>(ex->Response))->StatusCode; ResponseFromServer = ex->Message; } else { StatusCode = HttpStatusCode::ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } } catch (Exception ^ex) { StatusCode = HttpStatusCode::ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } Console::WriteLine("Response Code: " + StatusCode.ToString()); Console::WriteLine("Response String: " + ResponseFromServer); }
GET запрос
#include "stdafx.h" #using <mscorlib.dll> #using <System.dll> #using <System.Web.dll> using namespace System; using namespace System::Text; using namespace System::Web; using namespace System::Net; using namespace System::Security::Cryptography; using namespace System::IO; int _tmain(int argc, _TCHAR* argv[]) { String^ param = "currencyPair=BTC/USD"; String^ uri = "https://api.livecoin.net/exchange/ticker?"; String^ ResponseFromServer = ""; HttpStatusCode StatusCode; HttpWebRequest ^request = safe_cast<HttpWebRequest^>(WebRequest::Create(uri + param)); request->Method = "GET"; request->Timeout = 12000; request->ContentType = "application/x-www-form-urlencoded"; Stream ^dataStream; try { WebResponse ^WebResponse = request->GetResponse(); dataStream = WebResponse->GetResponseStream(); StreamReader ^StreamReader = gcnew System::IO::StreamReader(dataStream); ResponseFromServer = StreamReader->ReadToEnd(); dataStream->Close(); WebResponse->Close(); StatusCode = HttpStatusCode::OK; } catch (WebException ^ex) { if (ex->Response != nullptr) { dataStream = ex->Response->GetResponseStream(); StreamReader ^StreamReader = gcnew System::IO::StreamReader(dataStream); StatusCode = (safe_cast<HttpWebResponse^>(ex->Response))->StatusCode; ResponseFromServer = ex->Message; } else { StatusCode = HttpStatusCode::ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } } catch (Exception ^ex) { StatusCode = HttpStatusCode::ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } Console::WriteLine("Response Code: " + StatusCode.ToString()); Console::WriteLine("Response String: " + ResponseFromServer); }
C#
POST запрос
using System; using System.Text; using System.Web; using System.Net; using System.Security.Cryptography; using System.IO; namespace apice { class Program { private static string HashHMAC(string key, string message) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byte[] keyByte = encoding.GetBytes(key); HMACSHA256 hmacsha256 = new HMACSHA256(keyByte); byte[] messageBytes = encoding.GetBytes(message); byte[] hashmessage = hmacsha256.ComputeHash(messageBytes); return ByteArrayToString(hashmessage); } public static string ByteArrayToString(byte[] ba) { StringBuilder hex = new StringBuilder(ba.Length * 2); foreach (byte b in ba) hex.AppendFormat("{0:x2}", b); return hex.ToString(); } public static string http_build_query(String formdata ){ string str = formdata.Replace("/", "%2F"); str = str.Replace("@", "%40"); str = str.Replace(";", "%3B"); return str; } static void Main(string[] args) { string ApiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy"; string SecretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg"; string param = http_build_query("currencyPair=BTC/USD&price=60&quantity=0.01"); string Sign = HashHMAC(SecretKey, param).ToUpper(); string uri = "https://api.livecoin.net/exchange/buylimit"; string ResponseFromServer = ""; HttpStatusCode StatusCode; byte[] bytes = Encoding.UTF8.GetBytes(param); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bytes.Length; request.Headers["Api-Key"] = ApiKey; request.Headers["Sign"] = Sign; Stream dataStream = request.GetRequestStream(); dataStream.Write(bytes, 0, bytes.Length); try{ WebResponse WebResponse = request.GetResponse(); dataStream = WebResponse.GetResponseStream(); StreamReader StreamReader = new StreamReader(dataStream); ResponseFromServer = StreamReader.ReadToEnd(); dataStream.Close(); WebResponse.Close(); StatusCode = HttpStatusCode.OK; } catch (WebException ex) { if (ex.Response != null) { dataStream =ex.Response.GetResponseStream(); StreamReader StreamReader = new StreamReader(dataStream); StatusCode = ((HttpWebResponse)ex.Response).StatusCode ; ResponseFromServer = ex.Message; }else{ StatusCode = HttpStatusCode.ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } } catch (Exception ex){ StatusCode = HttpStatusCode.ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } Console.WriteLine("Response Code: " + StatusCode); Console.WriteLine("Response String: " + ResponseFromServer); } } }
GET запрос
using System; using System.Text; using System.Web; using System.Net; using System.Security.Cryptography; using System.IO; namespace apice { class Program { static void Main(string[] args) { string param = "currencyPair=BTC/USD"; string uri = "https://api.livecoin.net/exchange/ticker?"; string ResponseFromServer = ""; HttpStatusCode StatusCode; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + param); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; Stream dataStream; try { WebResponse WebResponse = request.GetResponse(); dataStream = WebResponse.GetResponseStream(); StreamReader StreamReader = new StreamReader(dataStream); ResponseFromServer = StreamReader.ReadToEnd(); dataStream.Close(); WebResponse.Close(); StatusCode = HttpStatusCode.OK; } catch (WebException ex) { if (ex.Response != null) { dataStream = ex.Response.GetResponseStream(); StreamReader StreamReader = new StreamReader(dataStream); StatusCode = ((HttpWebResponse)ex.Response).StatusCode; ResponseFromServer = ex.Message; } else { StatusCode = HttpStatusCode.ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } } catch (Exception ex) { StatusCode = HttpStatusCode.ExpectationFailed; ResponseFromServer = "Неизвестная ошибка"; } Console.WriteLine("Response Code: " + StatusCode); Console.WriteLine("Response String: " + ResponseFromServer); } } }
VB.NET
POST запрос
Imports System Imports System.Data Imports System.Net Imports System.IO Imports System.Security.Cryptography Imports System.Text Imports System.Web Module Module1 Sub Main() Dim Uri As String Dim param As String Dim statuscode As HttpStatusCode Dim dataStream As Stream = Nothing Dim StreamReader As StreamReader Dim ResponseFromServer As String Dim ApiKey As String Dim SecretKery As String Uri = "https://api.livecoin.net/exchange/buylimit" param = http_build_query("currencyPair=BTC/USD&price=60&quantity=1") ApiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" SecretKery = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy" Try Dim request As WebRequest = WebRequest.Create(Uri) request.Timeout = 120000 request.Method = "POST" Dim byteArray As Byte() = System.Text.Encoding.UTF8.GetBytes(param) request.Headers.Add("Api-Key", ApiKey) request.Headers.Add("Sign", HashHMAC(SecretKery, param).ToUpper) request.ContentType = "application/x-www-form-urlencoded" request.ContentLength = byteArray.Length dataStream = request.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim WebResponse As WebResponse = request.GetResponse() dataStream = WebResponse.GetResponseStream() StreamReader = New StreamReader(dataStream) responseFromServer = StreamReader.ReadToEnd() dataStream.Close() WebResponse.Close() statuscode = HttpStatusCode.OK Catch ex As WebException If ex.Response IsNot Nothing Then dataStream = ex.Response.GetResponseStream() Dim reader As New StreamReader(dataStream) statuscode = DirectCast(ex.Response, HttpWebResponse).StatusCode responseFromServer = ex.Message Else Dim resp As String = "" statuscode = HttpStatusCode.ExpectationFailed responseFromServer = "Неизвестная ошибка" End If Catch ex As Exception statuscode = HttpStatusCode.ExpectationFailed responseFromServer = "Неизвестная ошибка" End Try Console.WriteLine("Response Code: " & statuscode) Console.WriteLine("Response String: " & responseFromServer) End Sub Public Function http_build_query(formdata As String) As String http_build_query = formdata.Replace("/", "%2F") http_build_query = http_build_query.Replace("@", "%40") http_build_query = http_build_query.Replace(";", "%3B") End Function Public Function HashHMAC(key As String, message As String) As String Dim encoding As System.Text.UTF8Encoding Dim keyByte As Byte() Dim hmacsha256 As HMACSHA256 Dim messageBytes As Byte() Dim hashmessage As Byte() encoding = New System.Text.UTF8Encoding() keyByte = encoding.GetBytes(key) hmacsha256 = New HMACSHA256(keyByte) messageBytes = encoding.GetBytes(message) hashmessage = hmacsha256.ComputeHash(messageBytes) Return ByteArrayToString(hashmessage) End Function Public Function ByteArrayToString(ba As Byte()) As String Dim hex As StringBuilder Dim b As Byte hex = New StringBuilder(ba.Length * 2) For Each b In ba hex.AppendFormat("{0:x2}", b) Next Return hex.ToString() End Function End Module
GET запрос
Imports System Imports System.Data Imports System.Net Imports System.IO Imports System.Security.Cryptography Imports System.Text Imports System.Web Module Module1 Sub Main() Dim Uri As String Dim param As String Dim statuscode As HttpStatusCode Dim dataStream As Stream = Nothing Dim StreamReader As StreamReader Dim ResponseFromServer As String Uri = "https://api.livecoin.net/exchange/ticker?" param = "currencyPair=BTC/USD" Try Dim request As WebRequest = WebRequest.Create(Uri & param) request.Timeout = 120000 request.Method = "GET" request.ContentType = "application/x-www-form-urlencoded" Dim WebResponse As WebResponse = request.GetResponse() dataStream = WebResponse.GetResponseStream() StreamReader = New StreamReader(dataStream) ResponseFromServer = StreamReader.ReadToEnd() dataStream.Close() WebResponse.Close() statuscode = HttpStatusCode.OK Catch ex As WebException If ex.Response IsNot Nothing Then dataStream = ex.Response.GetResponseStream() Dim reader As New StreamReader(dataStream) statuscode = DirectCast(ex.Response, HttpWebResponse).StatusCode responseFromServer = ex.Message Else Dim resp As String = "" statuscode = HttpStatusCode.ExpectationFailed responseFromServer = "Неизвестная ошибка" End If Catch ex As Exception statuscode = HttpStatusCode.ExpectationFailed responseFromServer = "Неизвестная ошибка" End Try Console.WriteLine("Response Code: " & statuscode) Console.WriteLine("Response String: " & responseFromServer) End Sub End Module