I have written Java API to perform request/response of JSON over http using apacheHTTP client library, Code is enlisted below. It is encountering some errors and exceptions, Can you please provide pointers, How to fix it? I am jinxed with the problem. I am using Eclipse Mars, Sun Oracle Java 8, Apache Tomcat 7.0.52, Ubuntu 14.04 as base system to produce this code.
package bhawnas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.*;
import org.apache.commons.*;
import org.apache.http.impl.*;
import org.commonjava.web.json.*;
import org.apache.http.impl.client.HttpClientBuilder;
import org.json.JSONException;
import org.json.JSONObject;
@SuppressWarnings("unused")
public class SunSofProb {
public static void main (String args[]) {
//Exception Handling
try {
//create Http Client
HttpClient httpClient = HttpClientBuilder.create().build();
//Create fresh GET request for mentioned URL in Prob Stmt
HttpGet getRequest = new HttpGet ("http://surya-interview.appspot.com/message");
// Add header to accept getRequest which accepts application/JSON data
getRequest.addHeader("accept:X-Surya-Email-id:arunsingh.in@gmail.com", "application/json");
//Execute request and fetch response
HttpResponse response = httpClient.execute(getRequest);
// Check for HTTP Response code 200/404/500
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed:Http error code: " + response.getStatusLine().getStatusCode());
}
// else {
//throw new RuntimeException("Error reported code:" + response.getStatusLine().getStatusCode());
// }
//Capture GET complete application/json body response
BufferedReader br = new BufferedReader (new InputStreamReader((InputStream) response.getEntity().getContentType()));
String output;
System.out.println("================Output:===================");
//iteration through simple JSON response and depict on console
while ((output = br.readLine()) != null) {
System.out.println(output);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
In my view is there some library/jar to be added to classpath, thats why this run time error is occurring, Does I am using wrong environment, Kindly suggest fixers?
The error and exceptions are :
Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56)
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:69)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:81)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:56)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:460)
at bhawnas.SunSofProb.main(SunSofProb.java:47)