java.net.HttpURLConnection#setConnectTimeout ( )源码实例Demo

下面列出了java.net.HttpURLConnection#setConnectTimeout ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: cxf   文件: URIResolver.java
private HttpURLConnection createInputStream() throws IOException {
    HttpURLConnection huc = (HttpURLConnection)url.openConnection();

    String host = SystemPropertyAction.getPropertyOrNull("http.proxyHost");
    if (host != null) {
        //comment out unused port to pass pmd check
        /*String ports = SystemPropertyAction.getProperty("http.proxyPort");
        int port = 80;
        if (ports != null) {
            port = Integer.parseInt(ports);
        }*/

        String username = SystemPropertyAction.getPropertyOrNull("http.proxy.user");
        String password = SystemPropertyAction.getPropertyOrNull("http.proxy.password");

        if (username != null && password != null) {
            String encoded = Base64Utility.encode((username + ":" + password).getBytes());
            huc.setRequestProperty("Proxy-Authorization", "Basic " + encoded);
        }
    }
    huc.setConnectTimeout(30000);
    huc.setReadTimeout(60000);
    is = huc.getInputStream();
    return huc;
}
 
源代码2 项目: BiliRoaming   文件: BiliRoamingApi.java
private static String getContent(String urlString) throws IOException {
    URL url = new URL(urlString);

    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("Build", String.valueOf(BuildConfig.VERSION_CODE));
    connection.setConnectTimeout(4000);
    connection.connect();

    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        InputStream inputStream = connection.getInputStream();
        String encoding = connection.getContentEncoding();
        return StreamUtils.getContent(inputStream, encoding);
    }
    return null;
}
 
源代码3 项目: jdk8u-dev-jdk   文件: B6401598.java
static HttpURLConnection getHttpURLConnection(URL url, int timeout) throws IOException {

                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

                httpURLConnection.setConnectTimeout(40000);
                httpURLConnection.setReadTimeout(timeout);
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                httpURLConnection.setUseCaches(false);
                httpURLConnection.setAllowUserInteraction(false);
                httpURLConnection.setRequestMethod("POST");

                // HttpURLConnection httpURLConnection = new MyHttpURLConnection(url);

                return httpURLConnection;
        }
 
源代码4 项目: Natty   文件: SentinelUtils.java
private static HttpURLConnection getConnection(String url) throws IOException {
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    conn.setConnectTimeout(10 * 1000);
    conn.setReadTimeout(10 * 1000);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json");
    return conn;
}
 
源代码5 项目: mil-sym-java   文件: SECWebRenderer.java
private boolean isPluginServiceAvailable()
{
    try
    {
        int timeoutInSeconds = 1;
        int timeoutInMiliseconds = timeoutInSeconds * 1000;
        String strUrl = "";//TODO: set to actual url;
        java.net.URL url = new java.net.URL(strUrl);
        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        //urlConn.setInstanceFollowRedirects(false);
        urlConn.setRequestMethod("GET");
        //System.out.println("...");
        urlConn.setConnectTimeout(timeoutInMiliseconds);//seems to connect even if not running
        urlConn.setReadTimeout(timeoutInMiliseconds);//this is the one that matters
        //System.out.println("....");
        urlConn.connect();
        //System.out.println(".....");
        int response = urlConn.getResponseCode();
        //System.out.println("......");
        if(response==HttpURLConnection.HTTP_OK)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    catch(Exception exc)
    {
        ErrorLogger.LogException("SECWebRenderer", "isPluginServiceAvailable", exc);
        return false;
    }
}
 
源代码6 项目: android-vlc-remote   文件: Worker.java
@Override
public void run() {
    // Note: InetAddress#isReachable(int) always returns false for Windows
    // hosts because applications do not have permission to perform ICMP
    // echo requests.
    for (;;) {
        byte[] ipAddress = mManager.pollIpAddress();
        if (ipAddress == null) {
            break;
        }
        try {
            InetAddress address = InetAddress.getByAddress(ipAddress);
            String hostAddress = address.getHostAddress();
            URL url = createUrl("http", hostAddress, mPort, mPath);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(1000);
            try {
                int responseCode = connection.getResponseCode();
                String hostname = address.getHostName();
                mCallback.onReachable(address, mPort, hostname, responseCode);
            } finally {
                connection.disconnect();
            }
        } catch (IOException e) {
            mCallback.onUnreachable(ipAddress, mPort, e);
        }
    }
}
 
源代码7 项目: flink   文件: TestBaseUtils.java
public static String getFromHTTP(String url, Time timeout) throws Exception {
	final URL u = new URL(url);
	LOG.info("Accessing URL " + url + " as URL: " + u);

	final long deadline = timeout.toMilliseconds() + System.currentTimeMillis();

	while (System.currentTimeMillis() <= deadline) {
		HttpURLConnection connection = (HttpURLConnection) u.openConnection();
		connection.setConnectTimeout(100000);
		connection.connect();

		if (Objects.equals(HttpResponseStatus.SERVICE_UNAVAILABLE, HttpResponseStatus.valueOf(connection.getResponseCode()))) {
			// service not available --> Sleep and retry
			LOG.debug("Web service currently not available. Retrying the request in a bit.");
			Thread.sleep(100L);
		} else {
			InputStream is;

			if (connection.getResponseCode() >= 400) {
				// error!
				LOG.warn("HTTP Response code when connecting to {} was {}", url, connection.getResponseCode());
				is = connection.getErrorStream();
			} else {
				is = connection.getInputStream();
			}

			return IOUtils.toString(is, ConfigConstants.DEFAULT_CHARSET);
		}
	}

	throw new TimeoutException("Could not get HTTP response in time since the service is still unavailable.");
}
 
源代码8 项目: J2ME-Loader   文件: JarConverter.java
private void download(String urlStr, File outputJar) throws IOException {
	// Download jar if it is referenced in jad file
	URL url = new URL(getRedirect(urlStr));
	Log.d(TAG, "Downloading " + outputJar.getPath());
	HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	connection.setReadTimeout(30000);
	connection.setConnectTimeout(15000);
	InputStream inputStream = connection.getInputStream();
	OutputStream outputStream = new FileOutputStream(outputJar);
	IOUtils.copy(inputStream, outputStream);
	inputStream.close();
	outputStream.close();
	connection.disconnect();
	Log.d(TAG, "Download complete");
}
 
源代码9 项目: helios   文件: DefaultHttpConnector.java
private HttpURLConnection connect0(final URI ipUri, final String method, final byte[] entity,
                                   final Map<String, List<String>> headers,
                                   final String endpointHost)
    throws IOException {
  if (log.isTraceEnabled()) {
    log.trace("req: {} {} {} {} {} {}", method, ipUri, headers.size(),
        Joiner.on(',').withKeyValueSeparator("=").join(headers),
        entity.length, Json.asPrettyStringUnchecked(entity));
  } else {
    log.debug("req: {} {} {} {}", method, ipUri, headers.size(), entity.length);
  }

  final HttpURLConnection connection = (HttpURLConnection) ipUri.toURL().openConnection();
  handleHttps(connection, endpointHost, hostnameVerifierProvider, extraHttpsHandler);

  connection.setRequestProperty("Accept-Encoding", "gzip");
  connection.setInstanceFollowRedirects(false);
  connection.setConnectTimeout(httpTimeoutMillis);
  connection.setReadTimeout(httpTimeoutMillis);
  for (final Map.Entry<String, List<String>> header : headers.entrySet()) {
    for (final String value : header.getValue()) {
      connection.addRequestProperty(header.getKey(), value);
    }
  }
  if (entity.length > 0) {
    connection.setDoOutput(true);
    connection.getOutputStream().write(entity);
  }

  setRequestMethod(connection, method, connection instanceof HttpsURLConnection);

  return connection;
}
 
源代码10 项目: petscii-bbs   文件: PetsciiThread.java
public static DownloadData download(URL url, String userAgent) throws IOException {
    if ("ftp".equalsIgnoreCase(url.getProtocol()))
        return ftpDownload(url);
    try {
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("User-Agent", defaultString(userAgent));
        conn.setConnectTimeout(30000);
        conn.setReadTimeout(30000);

        int responseCode = conn.getResponseCode();
        final String contentDisposition = defaultString(conn.getHeaderField("Content-Disposition"));
        final String contentPart = contentDisposition.replaceAll("(?is)^.*?;\\s*?filename=['\"](.*?)['\"].*$", "$1");
        final String filename = isEmpty(contentPart) ? url.toString().replaceAll("(?is)^.*/([^\\?&#]+).*$","$1") : contentPart;
        if (responseCode >= 301 && responseCode <= 399) {
            final String newLocation = conn.getHeaderField("Location");
            return download(new URL(newLocation), userAgent);
        } else if (responseCode >= 200 && responseCode <= 299) {
            conn.connect();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            IOUtils.copy(conn.getInputStream(), baos);
            return new DownloadData(filename, baos.toByteArray());
        } else {
            throw new CbmIOException("Error during download from "+url);
        }
    }
    catch (IOException e) {
        throw new CbmIOException("Timeout during download from "+url);
    }
}
 
源代码11 项目: base-imageloader   文件: HttpStack.java
protected HttpURLConnection createConnection(String url) throws IOException
{
    String encodedUrl = Uri.encode(url, ALLOWED_URI_CHARS);
    HttpURLConnection conn = (HttpURLConnection) new URL(encodedUrl).openConnection();
    conn.setConnectTimeout(connectTimeout);
    conn.setReadTimeout(readTimeout);
    return conn;
}
 
源代码12 项目: ki4a   文件: Util.java
protected static boolean isOnline(Context context)
{
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    //"http://google.com"
    String url_str = PreferenceManager.
                        getDefaultSharedPreferences(context).
                        getString("verify_host_text",
                                    context.getString(R.string.pref_default_verify_host));

    if (netInfo != null && netInfo.isConnected()) {
        try {
            URL url = new URL(url_str);
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setConnectTimeout(2000);
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            }
        } catch (MalformedURLException e1) {
            MyLog.i(TAG, "Couldn't connect [Malformed] " + e1.toString());
        } catch (IOException e) {
            MyLog.i(TAG, "Couldn't connect " + e.toString());
        }
    }
    return false;
}
 
源代码13 项目: JWebAssembly   文件: Node.java
/**
 * Check if there is a new version of the script engine
 * 
 * @throws IOException
 *             if any error occur
 */
private void download() throws IOException {
    String fileName;
    String ext;
    final String os = System.getProperty( "os.name", "" ).toLowerCase();
    if( os.contains( "windows" ) ) {
        boolean is32 = "32".equals( System.getProperty( "sun.arch.data.model" ) );
        fileName = is32 ? "win-x86" : "win-x64";
        ext = "zip";
    } else if( os.contains( "mac" ) ) {
        fileName = "darwin-x64";
        ext = "tar.gz";
    } else if( os.contains( "linux" ) ) {
        fileName = "linux-x64";
        ext = "tar.gz";
    } else {
        throw new IllegalStateException( "Unknown OS: " + os );
    }
    String urlStr = MessageFormat.format( "{0}v{1}/node-v{1}-{2}.{3}", BASE_URL, REVISION, fileName, ext );

    File target = new File( System.getProperty( "java.io.tmpdir" ) + "/node" );
    File commandDir = new File( target.getAbsolutePath() + MessageFormat.format( "/node-v{1}-{2}", BASE_URL, REVISION, fileName, ext ) );

    if( commandDir.isDirectory() && commandDir.listFiles().length > 0 ) {
        // no download needed
        System.out.println( "\tUP-TP-DATE, use version from " + commandDir );
    } else {
        URL url = new URL( urlStr );
        System.out.println( "\tDownload: " + url );
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setConnectTimeout( 5000 );

        InputStream input = conn.getInputStream();

        extractStream( input, "tar.gz".equals( ext ), target );
    }

    command = commandDir.getAbsolutePath();
}
 
源代码14 项目: sds   文件: HttpUtils.java
public static String post(String urlPath, Map<String, Object> params) throws Exception {

        URL url = new URL(urlPath);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(1000);
        connection.setReadTimeout(1000);
        connection.setUseCaches(false);
        connection.addRequestProperty("encoding", CHARSET_NAME);
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setRequestMethod(HTTP_METHOD);

        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        OutputStream os = connection.getOutputStream();
        OutputStreamWriter osr = new OutputStreamWriter(os, CHARSET_NAME);
        BufferedWriter bw = new BufferedWriter(osr);

        /**
         * 构建请求参数
         */
        StringBuilder paramStr = new StringBuilder();
        for (Entry<String, Object> entry : params.entrySet()) {
            if (entry.getValue() == null) {
                continue;
            }

            paramStr.append(entry.getKey())
                    .append("=")
                    .append(URLEncoder.encode(entry.getValue().toString(), CHARSET_NAME))
                    .append("&");
        }

        String paramValue = paramStr.toString();
        if (paramValue.endsWith("&")) {
            paramStr.deleteCharAt(paramValue.length() - 1);
        }

        bw.write(paramStr.toString());
        bw.flush();

        InputStream is = connection.getInputStream();
        InputStreamReader isr = new InputStreamReader(is, CHARSET_NAME);
        BufferedReader br = new BufferedReader(isr);

        String line;
        StringBuilder response = new StringBuilder();
        while ((line = br.readLine()) != null) {
            response.append(line);
        }
        IOUtils.close(bw);
        IOUtils.close(osr);
        IOUtils.close(os);
        IOUtils.close(br);
        IOUtils.close(isr);
        IOUtils.close(is);

        return response.toString();
    }
 
源代码15 项目: letv   文件: AppbarActivity.java
protected byte[] a(String... strArr) {
    try {
        try {
            HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(strArr[0]).openConnection();
            httpURLConnection.setConnectTimeout(5000);
            try {
                httpURLConnection.setRequestMethod("GET");
                try {
                    InputStream inputStream = httpURLConnection.getInputStream();
                    try {
                        if (httpURLConnection.getResponseCode() == 200) {
                            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                            byte[] bArr = new byte[1024];
                            while (true) {
                                int read = inputStream.read(bArr);
                                if (read != -1) {
                                    byteArrayOutputStream.write(bArr, 0, read);
                                } else {
                                    byteArrayOutputStream.close();
                                    inputStream.close();
                                    return byteArrayOutputStream.toByteArray();
                                }
                            }
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return null;
                } catch (IOException e2) {
                    e2.printStackTrace();
                    return null;
                }
            } catch (ProtocolException e3) {
                e3.printStackTrace();
                return null;
            }
        } catch (IOException e22) {
            e22.printStackTrace();
            return null;
        }
    } catch (MalformedURLException e4) {
        e4.printStackTrace();
        return null;
    }
}
 
源代码16 项目: appinventor-extensions   文件: Texting.java
/**
 * Free software method copied and adapted from Voice.java
 * @see http://code.google.com/p/google-voice-java/
 * 
 */
private String sendGvSms(String smsData) {
  Log.i(TAG, "sendGvSms()");
  StringBuilder response = new StringBuilder();
  try {
    // Add the RNR_SE to the message
    smsData += "&" + URLEncoder.encode("_rnr_se", UTF8) + "=" + URLEncoder.encode(rnrSEE, UTF8);
    Log.i(TAG, "smsData = " + smsData);
    URL smsUrl = new URL(GV_SMS_SEND_URL);

    HttpURLConnection smsConn = (HttpURLConnection) smsUrl.openConnection();
    smsConn.setRequestProperty( "Authorization", "GoogleLogin auth=" + authToken );
    smsConn.setRequestProperty("User-agent", USER_AGENT);
    setCookies(smsConn);
    smsConn.setDoOutput(true);
    smsConn.setConnectTimeout(SERVER_TIMEOUT_MS);

    Log.i(TAG, "sms request = " + smsConn);
    OutputStreamWriter callwr = new OutputStreamWriter(smsConn.getOutputStream());
    callwr.write(smsData);
    callwr.flush();

    processCookies(smsConn);
    BufferedReader callrd = new BufferedReader(new InputStreamReader(smsConn.getInputStream()));

    String line;
    while ((line = callrd.readLine()) != null) {
      response.append(line);
      response.append("\n");  // HTTP uses \r\n, but Android is built on Linux, so use Unix line endings
    }
    Log.i(TAG, "sendGvSms:  Sent SMS, response = " + response);

    callwr.close();
    callrd.close();

    if (response.length() == 0) {
      throw new IOException("No Response Data Received.");
    } else {
      return response.toString();
    }
  } catch (IOException e) {
    Log.i(TAG, "IO Error on Send " + e.getMessage(), e);
    return "IO Error Message not sent";
  }
}
 
@Override
protected String doInBackground(String... strings) {
    StringBuffer responseBuffer = null;
    InputStream is;
    Uri.Builder uriBuilder = new Uri.Builder()
            .scheme(LivefyreConfig.scheme)
            .authority(LivefyreConfig.identityDomain + "." + environment)
            .appendPath(LivefyreConfig.getConfiguredNetworkID())
            .appendPath("api")
            .appendPath("v1.0")
            .appendPath("public")
            .appendPath("profile");
    try {
        URL url = new URL(uriBuilder.toString());

        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

        httpURLConnection.setRequestProperty("origin", origin);
        httpURLConnection.setRequestProperty("referer", referer);
        httpURLConnection.setRequestProperty("cookie", cookie);

        httpURLConnection.setRequestMethod("GET");
        if (httpURLConnection.getResponseCode() == 200 || httpURLConnection.getResponseCode() == 201) {
            httpURLConnection.setConnectTimeout(10000);
            httpURLConnection.setReadTimeout(10000);
            is = httpURLConnection.getInputStream();
            int ch;
            responseBuffer = new StringBuffer();
            while ((ch = is.read()) != -1) {
                responseBuffer.append((char) ch);
            }
            is.close();

            isOk = true;
        } else {
            isOk = false;
        }

    } catch (IOException e) {
        e.printStackTrace();
        isOk = false;
    }

    return responseBuffer.toString();
}
 
源代码18 项目: ip17mon-java   文件: Locator.java
public static Locator loadFromNet(String netPath) throws IOException {
    URL url = new URL(netPath);
    HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
    httpConn.setConnectTimeout(3000);
    httpConn.setReadTimeout(30 * 1000);
    int responseCode = httpConn.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
        return null;
    }

    int length = httpConn.getContentLength();
    if (length <= 0 || length > 64 * 1024 * 1024) {
        throw new InputMismatchException("invalid ip data");
    }
    InputStream is = httpConn.getInputStream();
    byte[] data = new byte[length];
    int downloaded = 0;
    int read = 0;
    while (downloaded < length) {
        try {
            read = is.read(data, downloaded, length - downloaded);
        } catch (IOException e) {
            is.close();
            throw new IOException("read error");
        }
        if (read < 0) {
            is.close();
            throw new IOException("read error");
        }
        downloaded += read;
    }

    is.close();

    String path = url.getPath();
    if (path.toLowerCase().endsWith("datx")) {
        return loadBinary(data, true);
    } else if (path.toLowerCase().endsWith("dat")) {
        return loadBinary(data, false);
    } else {
        return loadBinaryUnkown(data);
    }
}
 
源代码19 项目: AppUpdate   文件: HttpDownloadManager.java
/**
 * 全部下载
 */
private void fullDownload() {
    listener.start();
    try {
        URL url = new URL(apkUrl);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        con.setReadTimeout(Constant.HTTP_TIME_OUT);
        con.setConnectTimeout(Constant.HTTP_TIME_OUT);
        con.setRequestProperty("Accept-Encoding", "identity");
        if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            InputStream is = con.getInputStream();
            int length = con.getContentLength();
            int len;
            //当前已下载完成的进度
            int progress = 0;
            byte[] buffer = new byte[1024 * 2];
            File file = FileUtil.createFile(downloadPath, apkName);
            FileOutputStream stream = new FileOutputStream(file);
            while ((len = is.read(buffer)) != -1 && !shutdown) {
                //将获取到的流写入文件中
                stream.write(buffer, 0, len);
                progress += len;
                listener.downloading(length, progress);
            }
            if (shutdown) {
                //取消了下载 同时再恢复状态
                shutdown = false;
                LogUtil.d(TAG, "fullDownload: 取消了下载");
                listener.cancel();
            } else {
                listener.done(file);
            }
            //完成io操作,释放资源
            stream.flush();
            stream.close();
            is.close();
            //重定向
        } else if (con.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM ||
                con.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP) {
            apkUrl = con.getHeaderField("Location");
            con.disconnect();
            LogUtil.d(TAG, "fullDownload: 当前地址是重定向Url,定向后的地址:" + apkUrl);
            fullDownload();
        } else {
            listener.error(new SocketTimeoutException("下载失败:Http ResponseCode = " + con.getResponseCode()));
        }
        con.disconnect();
    } catch (Exception e) {
        listener.error(e);
        e.printStackTrace();
    }
}
 
源代码20 项目: LiquidBounce   文件: MixinNetHandlerLoginClient.java
@Inject(method = "handleEncryptionRequest", at = @At("HEAD"), cancellable = true)
private void handleEncryptionRequest(S01PacketEncryptionRequest packetIn, CallbackInfo callbackInfo) {
    if(MCLeaks.isAltActive()) {
        final SecretKey secretkey = CryptManager.createNewSharedKey();
        String s = packetIn.getServerId();
        PublicKey publickey = packetIn.getPublicKey();
        String s1 = (new BigInteger(CryptManager.getServerIdHash(s, publickey, secretkey))).toString(16);

        final Session session = MCLeaks.getSession();
        final String server = ((InetSocketAddress) this.networkManager.getRemoteAddress()).getHostName() + ":" + ((InetSocketAddress) this.networkManager.getRemoteAddress()).getPort();

        try {
            final String jsonBody = "{\"session\":\"" + session.getToken() + "\",\"mcname\":\"" + session.getUsername() + "\",\"serverhash\":\"" + s1 + "\",\"server\":\"" + server + "\"}";

            final HttpURLConnection connection = (HttpURLConnection) new URL("https://auth.mcleaks.net/v1/joinserver").openConnection();
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(10000);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
            connection.setDoOutput(true);

            final DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
            outputStream.write(jsonBody.getBytes(StandardCharsets.UTF_8));
            outputStream.flush();
            outputStream.close();

            final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            final StringBuilder outputBuilder = new StringBuilder();

            String line;
            while((line = reader.readLine()) != null)
                outputBuilder.append(line);

            reader.close();
            final JsonElement jsonElement = new Gson().fromJson(outputBuilder.toString(), JsonElement.class);

            if(!jsonElement.isJsonObject() || !jsonElement.getAsJsonObject().has("success")) {
                this.networkManager.closeChannel(new ChatComponentText("Invalid response from MCLeaks API"));
                callbackInfo.cancel();
                return;
            }

            if(!jsonElement.getAsJsonObject().get("success").getAsBoolean()) {
                String errorMessage = "Received success=false from MCLeaks API";

                if(jsonElement.getAsJsonObject().has("errorMessage"))
                    errorMessage = jsonElement.getAsJsonObject().get("errorMessage").getAsString();

                this.networkManager.closeChannel(new ChatComponentText(errorMessage));
                callbackInfo.cancel();
                return;
            }
        }catch(final Exception e) {
            this.networkManager.closeChannel(new ChatComponentText("Error whilst contacting MCLeaks API: " + e.toString()));
            callbackInfo.cancel();
            return;
        }

        ClientUtils.sendEncryption(networkManager, secretkey, publickey, packetIn);
        callbackInfo.cancel();
    }
}