Unirest in Java: Simplified, lightweight HTTP client library.

Overview

Unirest for Java

Actions Status MIT License Maven Central Javadocs Twitter Follow

Install With Maven:

<!-- Pull in as a traditional dependency -->
<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-java</artifactId>
    <version>3.11.09</version>
</dependency>

<!-- OR as a snazzy new standalone jar with shaded dependencies -->
<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-java</artifactId>
    <version>3.11.09</version>
    <classifier>standalone</classifier>
</dependency>

Upgrading from Previous Versions

See the Upgrade Guide

ChangeLog

See the Change Log for recent changes.

Documentation

Our Documentation

Comments
  • How can I create multiple instances of Unirest?

    How can I create multiple instances of Unirest?

    Hi, is there any chance that I can create multiple instances of unirest object? I would like to have multiple unirest objects with different configuration (timeouts, default headers, ...) in the application. I think this is not possible now. Is there any chance to have it in the future or is there some workaround?

    Unirest seems like great library, but I can't use it because I have many different scenarios with different configuration in application and I don't want they interfere each other.

    Thanks for the response in advance :)

    V2 Supported 
    opened by miso-belica 24
  • Support GET with a param which has multiple values

    Support GET with a param which has multiple values

    So than we can GET like this:

    Unirest.get("http://httpbin.org/get").fields(new HashMap<String, Object>() {
                {
                    this.put("name", Arrays.asList(0, 1, 2));
                }
            }).asJson();
    
    opened by qiuxiafei 23
  • Replace org.json JSON library

    Replace org.json JSON library

    I have a rather unusual request. Unireset-java uses the org.json JSON library, which is considered non-free software by some parties such as Debian or Google (https://wiki.debian.org/qa.debian.org/jsonevil). Thus, the library cannot be used in Debian, Ubuntu, Android. As a consequence, unireset-java cannot be packaged, too.

    Is it possible to replace the library by json-simple or by a cleanroom reimplementation of org.json (available under com.android.json in debian)?

    Feature Request Unirest 4 
    opened by koppor 22
  • Merge OpenUnirest/unirest-java into Kong/unirest-java

    Merge OpenUnirest/unirest-java into Kong/unirest-java

    This is a issue for the merge.

    Some prework to do:

    • [x] Change copyright/license headers to Kong
    • [x] Move Namespace back to Kong
    • [x] Figure out releasing
    • [x] Modularize the repo and move the official object mappers into it. All official mappers will relaese lock-step with unirest-java
    • [x] Remove deprecated methods
    • [x] Hide remaining places where Apache Http Client leaks out
    • [x] Add a Apache module as the default

    I'll take care of most of this in the Kong branch https://github.com/OpenUnirest/unirest-java/tree/kong

    OpenUnirest will continue to get security patched for 1 year after the merge and then will be archived.

    opened by ryber 17
  • Disable SSL Certificate check

    Disable SSL Certificate check

    Hello,

    I'm writing a server on Spring and I'm using Spring Security to limit connections to HTTPS, running the WAR on Tomcat. The server auto-generates a self-signed certificate and as I am using it in a development environment, I don't want to go through the hassle of obtaining proper certificates or something. This means that Unirest (or rather the underlying HTTP client) rejects the certificate with the following exception:

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    

    It's a pretty frustrating situation to be in, as I genuinely believe many people are using Unirest with these certificates. I think I can circumvent this issue by creating a custom HttpClient object and giving it to Unirest as the default, but I'd rather not mess with Unirest, in order to avoid any future issues down the line.

    I've noticed that the PHP version got this option (Mashape/unirest-php#27) quite some time ago.

    My questions are:

    1. Am I missing something obvious that would let me disable SSL certificate check? If so, would you kindly point me in the direction?
    2. If not, are there any plans to introduce this setting to the Java version as well?

    Thanks in advance for your time.

    opened by aemreunal 17
  • Get Body as String after mapping to Object

    Get Body as String after mapping to Object

    Hi

    Would be nice to add a second method (ex getRawBody() ) in HttpResponse interface returning the original response String Body even if we use .asObject() method for mapping.

    Thanks for reviewing this option

    opened by wildfiregt 15
  • Unable to find CloseableHttpClient

    Unable to find CloseableHttpClient

    I've gone about this several different ways now, and I'm running into roadblocks at each point. Here's the code that calls unirest:

    package com.akqa.glass.recipie;
    
    import android.util.Log;
    
    import com.mashape.unirest.http.HttpResponse;
    import com.mashape.unirest.http.JsonNode;
    import com.mashape.unirest.http.Unirest;
    import com.mashape.unirest.http.exceptions.UnirestException;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    //import org.apache.http.HttpResponse;
    //import org.shaded.apache.http.HttpHeaders;
    
    public class JSONParser {
        static InputStream is = null;
        static JSONObject jObj = null;
        static String json = "";
        private static final String TAG = JSONParser.class.getSimpleName();
        // constructor
        public JSONParser() {
        }
        public JSONObject getCamFindJSON(String type, String input) {
            Log.d("PARSER", "Inside Parser");
            /*
             *  Request processing from API
             */
            if(type == "request"){
                try {
                    HttpResponse<JsonNode> response = Unirest.post("https://camfind.p.mashape.com/image_requests")
                    .header("X-Mashape-Key", "Fhn5jZi5ixmshwnJMy7CGyj5yDCnp15DTQZjsniuwpVHfYHvFJ")
                    .field("image_request[image]", new File(input))
                    .field("image_request[language]", "en")
                    .field("image_request[locale]", "en_US")
                    .asJson();
                } catch (UnirestException e) {
                    Log.d(TAG, "Couldn't get request");
                    e.printStackTrace();
                }
            }
            /*
             *  Receive response from API
             */
            else if(type == "response"){
                try {
                    HttpResponse<JsonNode> response = Unirest.get("https://camfind.p.mashape.com/image_responses/" + input)
                    .header("X-Mashape-Key", "Fhn5jZi5ixmshwnJMy7CGyj5yDCnp15DTQZjsniuwpVHfYHvFJ")
                    .asJson();
                } catch (UnirestException e) {
                    Log.d(TAG, "Couldn't get reponse");
                    e.printStackTrace();
                }
            }
            /*
             *  Parse Response into readable JSON
             */
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "n");
                    Log.d("Raw Data", line);
                }
                is.close();
                json = sb.toString();
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }
            // try parse the string to a JSON object
            try {
                jObj = new JSONObject(json);
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
                e.printStackTrace();
            } catch (Exception e) {
                Log.e("JSON Parse", "Unknown Error");
                e.printStackTrace();
            }
            // return JSON String
            return jObj;
        }
    }
    

    Here is the logcat output:

    11-24 16:26:57.473  12605-12856/com.akqa.glass.recipie E/dalvikvm﹕ Could not find class 'org.apache.http.impl.client.CloseableHttpClient', referenced from method com.mashape.unirest.http.Unirest.shutdown
    11-24 16:26:57.473  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ VFY: unable to resolve check-cast 453 (Lorg/apache/http/impl/client/CloseableHttpClient;) in Lcom/mashape/unirest/http/Unirest;
    11-24 16:26:57.473  12605-12856/com.akqa.glass.recipie D/dalvikvm﹕ VFY: replacing opcode 0x1f at 0x0006
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie I/dalvikvm﹕ Could not find method org.apache.http.client.methods.HttpRequestBase.releaseConnection, referenced from method com.mashape.unirest.http.HttpClientHelper.request
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ VFY: unable to resolve virtual method 1085: Lorg/apache/http/client/methods/HttpRequestBase;.releaseConnection ()V
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0012
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie I/dalvikvm﹕ Could not find method org.apache.http.client.methods.HttpRequestBase.releaseConnection, referenced from method com.mashape.unirest.http.HttpClientHelper.request
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ VFY: unable to resolve virtual method 1085: Lorg/apache/http/client/methods/HttpRequestBase;.releaseConnection ()V
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0021
    11-24 16:26:57.481  12605-12856/com.akqa.glass.recipie I/dalvikvm﹕ Could not find method org.apache.http.client.config.RequestConfig.custom, referenced from method com.mashape.unirest.http.options.Options.refresh
    11-24 16:26:57.489  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ VFY: unable to resolve static method 1059: Lorg/apache/http/client/config/RequestConfig;.custom ()Lorg/apache/http/client/config/RequestConfig$Builder;
    11-24 16:26:57.489  12605-12856/com.akqa.glass.recipie D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0020
    11-24 16:26:57.489  12605-12856/com.akqa.glass.recipie D/dalvikvm﹕ DexOpt: unable to opt direct call 0x0701 at 0x49 in Lcom/mashape/unirest/http/options/Options;.refresh
    11-24 16:26:57.489  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/mashape/unirest/http/options/Options;
    11-24 16:26:57.489  12605-12856/com.akqa.glass.recipie W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x416aabd8)
    11-24 16:26:57.496  12605-12856/com.akqa.glass.recipie E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
        Process: com.akqa.glass.recipie, PID: 12605
        java.lang.RuntimeException: An error occured while executing doInBackground()
                at android.os.AsyncTask$3.done(AsyncTask.java:314)
                at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:240)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                at java.lang.Thread.run(Thread.java:841)
         Caused by: java.lang.NoClassDefFoundError: org.apache.http.client.config.RequestConfig
                at com.mashape.unirest.http.options.Options.refresh(Options.java:45)
                at com.mashape.unirest.http.options.Options.<clinit>(Options.java:34)
                at com.mashape.unirest.http.HttpClientHelper.prepareRequest(HttpClientHelper.java:154)
                at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:131)
                at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68)
                at com.akqa.glass.recipie.JSONParser.getCamFindJSON(JSONParser.java:41)
                at com.akqa.glass.recipie.RecipIE$CamFindRequest.doInBackground(RecipIE.java:287)
                at com.akqa.glass.recipie.RecipIE$CamFindRequest.doInBackground(RecipIE.java:275)
                at android.os.AsyncTask$2.call(AsyncTask.java:302)
                at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:240)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                at java.lang.Thread.run(Thread.java:841)
    11-24 16:26:57.520  12605-12860/com.akqa.glass.recipie D/PARSER﹕ Inside Parser
    11-24 16:26:57.520  12605-12860/com.akqa.glass.recipie I/dalvikvm﹕ Rejecting re-init on previously-failed class Lcom/mashape/unirest/http/options/Options; v=0x0
    11-24 16:26:57.528  12605-12860/com.akqa.glass.recipie W/dalvikvm﹕ threadid=13: thread exiting with uncaught exception (group=0x416aabd8)
    11-24 16:26:57.528  12605-12860/com.akqa.glass.recipie I/Process﹕ Sending signal. PID: 12605 SIG: 9
    
    opened by tortilaman 14
  • Multiple Proxies

    Multiple Proxies

    Hi there,

    There doesn't seem to be a way to have multiple proxies, I've tried to use multiple configs and then switch but doesn't seem to be what I'm looking for.

    Thanks

    opened by heychazza 13
  • mvn clean assembly:assembly can't complete

    mvn clean assembly:assembly can't complete

    I originally tried compiling with dependencies using maven in windows and got the following errors:

    <?xml version="1.0" encoding="UTF-8" ?>
    <testsuite tests="25" failures="4" name="com.mashape.unirest.test.http.UnirestTest" time="20.095" errors="0" skipped="0">
      <properties>
        <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
        <property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_25\jre\bin"/>
        <property name="java.vm.version" value="25.25-b02"/>
        <property name="java.vm.vendor" value="Oracle Corporation"/>
        <property name="java.vendor.url" value="http://java.oracle.com/"/>
        <property name="path.separator" value=";"/>
        <property name="guice.disable.misplaced.annotation.check" value="true"/>
        <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
        <property name="file.encoding.pkg" value="sun.io"/>
        <property name="user.script" value=""/>
        <property name="user.country" value="US"/>
        <property name="sun.java.launcher" value="SUN_STANDARD"/>
        <property name="sun.os.patch.level" value=""/>
        <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
        <property name="user.dir" value="C:\Users\torti_000\unirest-java"/>
        <property name="java.runtime.version" value="1.8.0_25-b18"/>
        <property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
        <property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_25\jre\lib\endorsed"/>
        <property name="os.arch" value="amd64"/>
        <property name="java.io.tmpdir" value="C:\Users\TORTI_~1\AppData\Local\Temp\"/>
        <property name="line.separator" value="
    "/>
        <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
        <property name="user.variant" value=""/>
        <property name="os.name" value="Windows 8.1"/>
        <property name="classworlds.conf" value="C:\Program Files\Apache\apache-maven-3.2.3\bin\m2.conf"/>
        <property name="sun.jnu.encoding" value="Cp1252"/>
        <property name="java.library.path" value="C:\Program Files\Java\jdk1.8.0_25\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Git\cmd;C:\Users\torti_000\Desktop\adb-tools;C:\Program Files\Java\jdk1.8.0_25\bin;C:\Program Files\Apache\apache-maven-3.2.3\bin;C:\Program Files (x86)\Atmel\Flip 3.4.7\bin;."/>
        <property name="java.specification.name" value="Java Platform API Specification"/>
        <property name="java.class.version" value="52.0"/>
        <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
        <property name="os.version" value="6.3"/>
        <property name="user.home" value="C:\Users\torti_000"/>
        <property name="user.timezone" value="America/Los_Angeles"/>
        <property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
        <property name="java.specification.version" value="1.8"/>
        <property name="file.encoding" value="Cp1252"/>
        <property name="user.name" value="torti_000"/>
        <property name="java.class.path" value="C:\Program Files\Apache\apache-maven-3.2.3\boot\plexus-classworlds-2.5.1.jar"/>
        <property name="java.vm.specification.version" value="1.8"/>
        <property name="sun.arch.data.model" value="64"/>
        <property name="java.home" value="C:\Program Files\Java\jdk1.8.0_25\jre"/>
        <property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher clean assembly:assembly"/>
        <property name="java.specification.vendor" value="Oracle Corporation"/>
        <property name="user.language" value="en"/>
        <property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
        <property name="java.vm.info" value="mixed mode"/>
        <property name="java.version" value="1.8.0_25"/>
        <property name="java.ext.dirs" value="C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext;C:\Windows\Sun\Java\lib\ext"/>
        <property name="sun.boot.class.path" value="C:\Program Files\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_25\jre\classes"/>
        <property name="sun.stderr.encoding" value="cp437"/>
        <property name="java.vendor" value="Oracle Corporation"/>
        <property name="maven.home" value="C:\Program Files\Apache\apache-maven-3.2.3"/>
        <property name="file.separator" value="\"/>
        <property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
        <property name="sun.cpu.endian" value="little"/>
        <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
        <property name="sun.stdout.encoding" value="cp437"/>
        <property name="sun.desktop" value="windows"/>
        <property name="sun.cpu.isalist" value="amd64"/>
      </properties>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGet" time="1.057"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testCustomUserAgent" time="0.117"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testAsync" time="0.267"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGzip" time="0.128"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testPathParameters2" time="0.108"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testBasicAuth" time="0.134"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGzipAsync" time="0.1"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testSetTimeouts" time="3.383"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGetFields2" time="0.185"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testMultipart" time="0.14">
        <failure message="expected:&lt;This [
    is 
    a 
    test ]
    file&gt; but was:&lt;This [
    is 
    a 
    test 
    ]
    file&gt;" type="org.junit.ComparisonFailure">org.junit.ComparisonFailure: expected:&lt;This [
    is 
    a 
    test ]
    file&gt; but was:&lt;This [
    is 
    a 
    test 
    ]
    file&gt;
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.mashape.unirest.test.http.UnirestTest.testMultipart(UnirestTest.java:279)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    </failure>
      </testcase>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGetUTF8" time="0.097"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testAsyncCallback" time="0.198"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testRequests" time="0.271"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testQueryAndBodyParameters" time="0.139"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testPostBinaryUTF8" time="0.11">
        <failure message="expected:&lt;This [
    is 
    a 
    test ]
    file&gt; but was:&lt;This [
    is 
    a 
    test 
    ]
    file&gt;" type="org.junit.ComparisonFailure">org.junit.ComparisonFailure: expected:&lt;This [
    is 
    a 
    test ]
    file&gt; but was:&lt;This [
    is 
    a 
    test 
    ]
    file&gt;
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.mashape.unirest.test.http.UnirestTest.testPostBinaryUTF8(UnirestTest.java:129)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    </failure>
      </testcase>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testPostRawBody" time="0.117">
        <failure message="expected:&lt;&apos;&quot;@[こんにちは]-test-123-0.65075844...&gt; but was:&lt;&apos;&quot;@[?????]-test-123-0.65075844...&gt;" type="org.junit.ComparisonFailure">org.junit.ComparisonFailure: expected:&lt;&apos;&quot;@[こんにちは]-test-123-0.65075844...&gt; but was:&lt;&apos;&quot;@[?????]-test-123-0.65075844...&gt;
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.mashape.unirest.test.http.UnirestTest.testPostRawBody(UnirestTest.java:142)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    </failure>
      </testcase>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testDeleteBody" time="0.117"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testMissingPathParameter" time="0"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGetFields" time="0.222"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testDelete" time="0.237"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testPostUTF8" time="0.106"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testDefaultHeaders" time="0.348"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testMultipartAsync" time="10.007">
        <failure type="java.lang.AssertionError">java.lang.AssertionError
        at org.junit.Assert.fail(Assert.java:86)
        at org.junit.Assert.assertTrue(Assert.java:41)
        at org.junit.Assert.assertTrue(Assert.java:52)
        at com.mashape.unirest.test.http.UnirestTest.testMultipartAsync(UnirestTest.java:320)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    </failure>
        <system-err>Exception in thread &quot;I/O dispatcher 5&quot; org.junit.ComparisonFailure: expected:&lt;This [
    is 
    a 
    test ]
    file&gt; but was:&lt;This [
    is 
    a 
    test 
    ]
    file&gt;
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.mashape.unirest.test.http.UnirestTest$2.completed(UnirestTest.java:306)
        at com.mashape.unirest.http.HttpClientHelper$1.completed(HttpClientHelper.java:82)
        at com.mashape.unirest.http.HttpClientHelper$1.completed(HttpClientHelper.java:75)
        at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:115)
        at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:173)
        at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:355)
        at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:242)
        at org.apache.http.impl.nio.client.LoggingAsyncRequestExecutor.inputReady(LoggingAsyncRequestExecutor.java:87)
        at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:264)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:73)
        at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:37)
        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:584)
        at java.lang.Thread.run(Thread.java:745)
    </system-err>
      </testcase>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testPathParameters" time="0.107"/>
      <testcase classname="com.mashape.unirest.test.http.UnirestTest" name="testGetMultiple" time="2.4"/>
    </testsuite>
    

    Next I eventually got maven working on mac and tried doing it there. Still errors:

    <?xml version="1.0" encoding="UTF-8" ?>
    <testsuite failures="1" time="6.307" errors="0" skipped="0" tests="25" name="com.mashape.unirest.test.http.UnirestTest">
      <properties>
        <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
        <property name="sun.boot.library.path" value="/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries"/>
        <property name="java.vm.version" value="20.65-b04-466.1"/>
        <property name="awt.nativeDoubleBuffering" value="true"/>
        <property name="gopherProxySet" value="false"/>
        <property name="mrj.build" value="11M4716"/>
        <property name="java.vm.vendor" value="Apple Inc."/>
        <property name="java.vendor.url" value="http://www.apple.com/"/>
        <property name="path.separator" value=":"/>
        <property name="guice.disable.misplaced.annotation.check" value="true"/>
        <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
        <property name="file.encoding.pkg" value="sun.io"/>
        <property name="user.country" value="US"/>
        <property name="sun.java.launcher" value="SUN_STANDARD"/>
        <property name="sun.os.patch.level" value="unknown"/>
        <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
        <property name="user.dir" value="/Users/nick.doering/unirest-java"/>
        <property name="java.runtime.version" value="1.6.0_65-b14-466.1-11M4716"/>
        <property name="java.awt.graphicsenv" value="apple.awt.CGraphicsEnvironment"/>
        <property name="java.endorsed.dirs" value="/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/endorsed"/>
        <property name="os.arch" value="x86_64"/>
        <property name="java.io.tmpdir" value="/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/"/>
        <property name="line.separator" value="
    "/>
        <property name="java.vm.specification.vendor" value="Sun Microsystems Inc."/>
        <property name="os.name" value="Mac OS X"/>
        <property name="classworlds.conf" value="/usr/local/apache-maven/bin/m2.conf"/>
        <property name="sun.jnu.encoding" value="MacRoman"/>
        <property name="java.library.path" value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"/>
        <property name="java.specification.name" value="Java Platform API Specification"/>
        <property name="java.class.version" value="50.0"/>
        <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
        <property name="os.version" value="10.9.4"/>
        <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
        <property name="user.home" value="/var/root"/>
        <property name="user.timezone" value="America/Los_Angeles"/>
        <property name="java.awt.printerjob" value="apple.awt.CPrinterJob"/>
        <property name="java.specification.version" value="1.6"/>
        <property name="file.encoding" value="MacRoman"/>
        <property name="user.name" value="root"/>
        <property name="java.class.path" value="/usr/local/apache-maven/boot/plexus-classworlds-2.5.1.jar"/>
        <property name="java.vm.specification.version" value="1.0"/>
        <property name="sun.arch.data.model" value="64"/>
        <property name="java.home" value="/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"/>
        <property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher clean assembly:assembly"/>
        <property name="java.specification.vendor" value="Sun Microsystems Inc."/>
        <property name="user.language" value="en"/>
        <property name="awt.toolkit" value="apple.awt.CToolkit"/>
        <property name="java.vm.info" value="mixed mode"/>
        <property name="java.version" value="1.6.0_65"/>
        <property name="java.ext.dirs" value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext"/>
        <property name="sun.boot.class.path" value="/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar"/>
        <property name="java.vendor" value="Apple Inc."/>
        <property name="maven.home" value="/usr/local/apache-maven"/>
        <property name="file.separator" value="/"/>
        <property name="java.vendor.url.bug" value="http://bugreport.apple.com/"/>
        <property name="sun.cpu.endian" value="little"/>
        <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
        <property name="mrj.version" value="1070.1.6.0_65-466.1"/>
        <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
        <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
        <property name="sun.cpu.isalist" value=""/>
      </properties>
      <testcase time="0.95" classname="com.mashape.unirest.test.http.UnirestTest" name="testGet"/>
      <testcase time="0.151" classname="com.mashape.unirest.test.http.UnirestTest" name="testCustomUserAgent"/>
      <testcase time="0.241" classname="com.mashape.unirest.test.http.UnirestTest" name="testAsync"/>
      <testcase time="0.103" classname="com.mashape.unirest.test.http.UnirestTest" name="testGzip"/>
      <testcase time="0.15" classname="com.mashape.unirest.test.http.UnirestTest" name="testPathParameters2"/>
      <testcase time="0.092" classname="com.mashape.unirest.test.http.UnirestTest" name="testBasicAuth"/>
      <testcase time="0.1" classname="com.mashape.unirest.test.http.UnirestTest" name="testGzipAsync"/>
      <testcase time="1.024" classname="com.mashape.unirest.test.http.UnirestTest" name="testSetTimeouts"/>
      <testcase time="0.182" classname="com.mashape.unirest.test.http.UnirestTest" name="testGetFields2"/>
      <testcase time="0.096" classname="com.mashape.unirest.test.http.UnirestTest" name="testMultipart"/>
      <testcase time="0.085" classname="com.mashape.unirest.test.http.UnirestTest" name="testGetUTF8"/>
      <testcase time="0.176" classname="com.mashape.unirest.test.http.UnirestTest" name="testAsyncCallback"/>
      <testcase time="0.087" classname="com.mashape.unirest.test.http.UnirestTest" name="testRequests"/>
      <testcase time="0.094" classname="com.mashape.unirest.test.http.UnirestTest" name="testQueryAndBodyParameters"/>
      <testcase time="0.089" classname="com.mashape.unirest.test.http.UnirestTest" name="testPostBinaryUTF8"/>
      <testcase time="0.093" classname="com.mashape.unirest.test.http.UnirestTest" name="testPostRawBody">
        <failure message="expected:&lt;&apos;&quot;@[こんにちは]-test-123-0.61520199...&gt; but was:&lt;&apos;&quot;@[?????]-test-123-0.61520199...&gt;" type="org.junit.ComparisonFailure">org.junit.ComparisonFailure: expected:&lt;&apos;&quot;@[こんにちは]-test-123-0.61520199...&gt; but was:&lt;&apos;&quot;@[?????]-test-123-0.61520199...&gt;
        at org.junit.Assert.assertEquals(Assert.java:115)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.mashape.unirest.test.http.UnirestTest.testPostRawBody(UnirestTest.java:142)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    </failure>
      </testcase>
      <testcase time="0.086" classname="com.mashape.unirest.test.http.UnirestTest" name="testDeleteBody"/>
      <testcase time="0" classname="com.mashape.unirest.test.http.UnirestTest" name="testMissingPathParameter"/>
      <testcase time="0.087" classname="com.mashape.unirest.test.http.UnirestTest" name="testGetFields"/>
      <testcase time="0.176" classname="com.mashape.unirest.test.http.UnirestTest" name="testDelete"/>
      <testcase time="0.086" classname="com.mashape.unirest.test.http.UnirestTest" name="testPostUTF8"/>
      <testcase time="0.256" classname="com.mashape.unirest.test.http.UnirestTest" name="testDefaultHeaders"/>
      <testcase time="0.09" classname="com.mashape.unirest.test.http.UnirestTest" name="testMultipartAsync"/>
      <testcase time="0.085" classname="com.mashape.unirest.test.http.UnirestTest" name="testPathParameters"/>
      <testcase time="1.728" classname="com.mashape.unirest.test.http.UnirestTest" name="testGetMultiple"/>
    </testsuite>
    
    opened by tortilaman 13
  • Consider adding a progress listener for Callback

    Consider adding a progress listener for Callback

    One thing that would make this library even better is to add a simple progress callback that updates as a request is made. For POST/PUT/PATCH etc it would be great for this to monitor upload progress, and for GET/DELETE etc it would be great for download progress. Thoughts? This is another side note, but it would be nice to include a default callback class that provides stubbed implementations of the callback interface for those who don't wish to provide functionality for some of the methods.

    Future<HttpResponse<JsonNode>> future = Unirest.post("http://httpbin.org/post")
      .header("accept", "application/json")
      .field("param1", "value1")
      .field("param2", "value2")
      .asJsonAsync(new Callback<JsonNode>() {
    
        public void failed(UnirestException e) {
            System.out.println("The request has failed");
        }
    
        public void completed(HttpResponse<JsonNode> response) {
             int code = response.getCode();
             Map<String, String> headers = response.getHeaders();
             JsonNode body = response.getBody();
             InputStream rawBody = response.getRawBody();
        }
    
        public void cancelled() {
            System.out.println("The request has been cancelled");
        }
    
        public void progress(long current, long total) {
            System.out.println("Progress: " + ((float)current / (float)total));
        }
    
    });
    
    opened by vincentjames501 13
  • IllegalThreadStateException in HttpClientHelper.requestAsync (HttpClientHelper.java:100)

    IllegalThreadStateException in HttpClientHelper.requestAsync (HttpClientHelper.java:100)

    We're getting this error when calling requestAsync parallel during performance testing our application with gatling.

    java.lang.IllegalThreadStateException: null at java.lang.Thread.start(Thread.java:705) ~[na:1.8.0_40] at com.mashape.unirest.http.HttpClientHelper.requestAsync(HttpClientHelper.java:100) ~[unirest-java-1.4.5.jar:na] at com.mashape.unirest.request.BaseRequest.asStringAsync(BaseRequest.java:64) ~[unirest-java-1.4.5.jar:na]

    opened by jokraehe 12
  • Warning/error on invalid/non-ASCII characters in URL

    Warning/error on invalid/non-ASCII characters in URL

    Is your feature request related to a problem? Please describe. We use Unirest in our application, and recently I encountered an issue that was very hard to troubleshoot. We configure a UnirestInstance with a default base URL, and then call individual endpoints on this base URL using calls like unirestInstance.get("/api/...") and unirestInstance.post("/api/...").

    All pretty standard, however for one of these invocations we ran into a java.net.UnknownHostException, even though that request was using the same default base URL as some of the other requests, and copying/pasting the host name shown in the exception message into an nslookup command didn't reveal any issues.

    Even a breakpoint on InetAddress::getAllByName seemed to show the exact same hostname for both successful requests and the failing request. Only after doing a host.getBytes() and comparing byte contents, I noticed that the failing host name had 3 extra bytes at the end: -30 -128 -117

    From a Unirest perspective, these 3 bytes didn't come from the default base URL (as that would have caused other requests to fail as well), but from the endpoint passed in one of the get/post methods. This endpoint URI was likely copied/pasted from a Swagger page, and apparently this resulted in these 3 invisible bytes being present at the start of the endpoint URI. Being before the first slash, apparently these 3 bytes were appended to the host name, eventually causing the UnknownHostException.

    Describe the solution you'd like Not sure whether Unirest should simply reject URL's containing invalid/non-ASCII characters (which I guess could break some existing applications; maybe have this configurable and disabled by default), log a warning, ...?

    Also, I guess Unirest shouldn't have appended those 3 bytes to the host name; these 3 bytes should have been considered part of the path.

    Describe alternatives you've considered None

    Additional context N/A

    opened by rsenden 1
  • Unirest 3.7.02 Proxy Connection Timeout (Apache https://issues.apache.org/jira/browse/HTTPCLIENT-1478)

    Unirest 3.7.02 Proxy Connection Timeout (Apache https://issues.apache.org/jira/browse/HTTPCLIENT-1478)

    Describe the bug Using a bad proxy with unirest seems to disregard the timeout set. I've seen it occur multiple times where after passing the proxy to the instance configuration, it hangs on a request regardless of the timeouts (connection and socket) set via config.

    To Reproduce Code to reproduce the behavior:

    	Proxy proxy = new Proxy("127.0.0.1", 8080);
    	UnirestInstance unirest = Unirest.spawnInstance();
    	if (proxy != null) {
    		unirest.config().proxy(proxy);
    	}
    	unirest.config()
    			.verifySsl(false)
    			.followRedirects(true)
    			.enableCookieManagement(true)
    			.connectTimeout(Main.timeoutMilliseconds)
    			.socketTimeout(Main.timeoutMilliseconds);
    
    	HttpResponse<String> first = unirest.get("https://google.com/").asString();
    

    Expected behavior It will just hang on this response and produce nothing/no errors.

    Environmental Data:

    • Java Version: JDK.18.0_31
    Dependency Bug 
    opened by LandyLane 4
  • ObjectMappers should be able to take InputStreams to handle large responses

    ObjectMappers should be able to take InputStreams to handle large responses

    Is your feature request related to a problem? Please describe. Large responses must be fully read into memory in order to get passed to an ObjectMapper as a string. allow support for Mappers to take a InputStream.

    Describe the solution you'd like an overload of methods to take/return inputstreams. This should be optional and not a breaking change

    Feature Request 
    opened by ryber 0
  • Support PACT testing recording

    Support PACT testing recording

    Is your feature request related to a problem? Please describe. I'd like to be able to record interactions with Unirest and output them into a PACT file for testing. Would also be great to validate responses.

    Describe the solution you'd like Some kind of flag to begin recording a request.

    Describe alternatives you've considered The current PACT java framework has a LOT of undesirable dependencies. Need something lightweight

    Feature Request 
    opened by ryber 0
  • Support honoring Retry-After headers for 429, 503 and 301 in Async Methods

    Support honoring Retry-After headers for 429, 503 and 301 in Async Methods

    Is your feature request related to a problem? Please describe. Support honoring Retry-After headers for 429, 503 and 301

    Describe the solution you'd like When a server issues a 429, 503 or 301 with a Retry-After header the client is asked to wait that period (either a date, or a number of seconds). Enable Unirest to do this automatically

    #Questions to consider:

    • do we roll this out as default behavior or make users enable it?
    • do we have a max number of times to retry before giving up? (do it 3 times and then give up if we are still getting the header)
    • do we have a max time before giving up? (if the server tells us to wait until 2023?)
    Feature Request Unirest 4 
    opened by ryber 1
Releases(v4.0.0-RC7)
  • v4.0.0-RC7(Dec 4, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.14.1(Dec 4, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC6(Nov 26, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.14.0(Nov 26, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC5(Nov 21, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.13(Nov 21, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.12(Oct 26, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.11(Aug 23, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.10(May 24, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.9(May 24, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.8(Apr 12, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.7(Mar 16, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC4(Feb 12, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC3(Feb 12, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC2(Jan 16, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.6(Jan 6, 2022)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.5(Dec 14, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.4(Nov 20, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.3(Nov 1, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.2(Oct 23, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.1(Oct 22, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.13.0(Sep 12, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.12.0(Sep 8, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.11.13(Aug 27, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.11.12(Jul 14, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.11.11(Feb 6, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-RC1(Jan 18, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.11.10(Jan 9, 2021)

    See CHANGELOG.md for details. Fresh releases may take up to 20 minutes to show up in Maven Central: https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • v3.11.09(Dec 30, 2020)

    See CHANGELOG.md for details.

    Fresh releases may take up to 20 minutes to show up in Maven Central:

    https://mvnrepository.com/artifact/com.konghq/unirest-java

    Source code(tar.gz)
    Source code(zip)
  • unirest-java-1.4.8(Feb 4, 2016)

Owner
Kong
The Cloud Connectivity Company. Community Driven & Enterprise Adopted.
Kong
A high-level and lightweight HTTP client framework for Java. it makes sending HTTP requests in Java easier.

A high-level and lightweight HTTP client framework for Java. it makes sending HTTP requests in Java easier.

dromara 1.2k Jan 8, 2023
http-kit is a minimalist, event-driven, high-performance Clojure HTTP server/client library with WebSocket and asynchronous support

HTTP Kit A simple, high-performance event-driven HTTP client+server for Clojure CHANGELOG | API | current Break Version: [http-kit "2.5.3"] ; Publish

HTTP Client/Server for Clojure 2.3k Dec 31, 2022
Asynchronous Http and WebSocket Client library for Java

Async Http Client Follow @AsyncHttpClient on Twitter. The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and a

AsyncHttpClient 6k Jan 8, 2023
Google HTTP Client Library for Java

Google HTTP Client Library for Java Description Written by Google, the Google HTTP Client Library for Java is a flexible, efficient, and powerful Java

Google APIs 1.3k Jan 4, 2023
⚗️ Lightweight HTTP extensions for Java 11

Methanol A lightweight library that complements java.net.http for a better HTTP experience. Overview Methanol provides useful lightweight HTTP extensi

Moataz Abdelnasser 175 Dec 17, 2022
Square’s meticulous HTTP client for the JVM, Android, and GraalVM.

OkHttp See the project website for documentation and APIs. HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP

Square 43.4k Jan 5, 2023
Java HTTP Request Library

Http Request A simple convenience library for using a HttpURLConnection to make requests and access the response. This library is available under the

Kevin Sawicki 3.3k Dec 30, 2022
Feign makes writing java http clients easier

Feign makes writing java http clients easier Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. Feign's first goal

null 8.5k Dec 30, 2022
Tiny, easily embeddable HTTP server in Java.

NanoHTTPD – a tiny web server in Java NanoHTTPD is a light-weight HTTP server designed for embedding in other applications, released under a Modified

NanoHttpd 6.5k Jan 5, 2023
A Java event based WebSocket and HTTP server

Webbit - A Java event based WebSocket and HTTP server Getting it Prebuilt JARs are available from the central Maven repository or the Sonatype Maven r

null 808 Jan 3, 2023
Feign makes writing java http clients easier

Feign makes writing java http clients easier Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. Feign's first goal

null 8.5k Jan 1, 2023
Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Koios Java Client What is Koios? Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Dudi Edri 13 Dec 4, 2022
Share the chat messages across Minecraft Servers via HTTP backend powered by Spring Boot, this is the backend part of the project.

InterconnectedChat-Backend Share the chat messages across Minecraft Servers via HTTP backend powered by Spring Boot, this is the backend part of the p

贺兰星辰 3 Oct 6, 2021
Fast_Responder is a service that lets you quickly create an Http request responder

Fast_Responder is a service that lets you quickly create an Http request responder. The transponder can receive any request path configured and determine the request parameters according to your configuration to return different results. In addition to processing requests, the transponder can also make Http requests to any request address based on the latency, request headers, and parameters you configure. In essence, fast_responder is a dynamic mock service.

null 8 Jan 26, 2022
httpx - CLI to run HTTP file

httpx: CLI for run http file httpx is a CLI to execute requests from JetBrains Http File. How to install? Mac : brew install httpx-sh/tap/httpx Other

httpx 105 Dec 15, 2022
AltiriaSmsJavaClient, the official Java client of Altiria

¡Atención! Este proyecto aún se encuentra en desarrollo. Pronto se publicará la versión final para su uso. Altiria, cliente SMS Java Altiria SMS Java

Altiria 4 Dec 5, 2022
Client-side response routing for Spring

Riptide: A next generation HTTP client Riptide noun, /ˈrɪp.taɪd/: strong flow of water away from the shore Riptide is a library that implements client

Zalando SE 235 Jan 3, 2023
A small client useful for a variety of tasks ranging from raiding to duping.

CornClient A small utility mod for Minecraft useful for a variety of tasks ranging from raiding to duping. Support You can open an issue for help or f

Arilius Collection 115 Jan 4, 2022