HttpURLConnection
unknown
java
2 years ago
3.7 kB
14
Indexable
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
public class GraphQLQueryNative {
private static final String ENDPOINT_URL = "https://streaming.bitquery.io/graphql";
private static final String API_KEY = "*****" //API KEY
public static void main(String[] args) {
try {
String responseBody = executeQuery();
System.out.println(responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String executeQuery() throws Exception {
URL url = new URL(ENDPOINT_URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("X-API-KEY", API_KEY);
conn.setDoOutput(true);
String query = "subscription NotAlwaysWorkingSub {" +
"EVM(network: eth, trigger_on: head) {" +
"buyside: DEXTrades(" +
"orderBy: {descending: Block_Time}," +
"where: {" +
"Trade: {" +
"Sell: {" +
"Currency: {" +
"SmartContract: {is: \\\"0x423f4e6138E475D85CF7Ea071AC92097Ed631eea\\\"}" +
"}" +
"}," +
"Dex: {" +
"ProtocolName: {is: \\\"uniswap_v3\\\"}," +
"Pair: {SmartContract: {}}" +
"}" +
"}" +
"}" +
") {" +
"Block {" +
"Number," +
"Time" +
"}," +
"Transaction {" +
"From," +
"To," +
"Hash" +
"}," +
"Trade {" +
"Buy {" +
"Amount," +
"Buyer," +
"Currency {" +
"Name," +
"Symbol," +
"SmartContract" +
"}," +
"Seller," +
"Price" +
"}," +
"Sell {" +
"Amount," +
"Buyer," +
"Currency {" +
"Name," +
"SmartContract," +
"Symbol" +
"}," +
"Seller," +
"Price" +
"}," +
"Dex {" +
"ProtocolFamily," +
"ProtocolName," +
"SmartContract," +
"Pair {" +
"SmartContract" +
"}" +
"}" +
"}" +
"}" +
"}" +
"}";
String payload = "{\"query\":\"" + query + "\",\"variables\":\"{}\"}";
try (OutputStream os = conn.getOutputStream()) {
byte[] input = payload.getBytes("utf-8");
os.write(input, 0, input.length);
}
int responseCode = conn.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("Failed : HTTP error code : " + responseCode);
}
java.io.InputStream is = conn.getInputStream();
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
String responseBody = s.hasNext() ? s.next() : "";
conn.disconnect();
return responseBody;
}
}
Editor is loading...