I have been struggling with Reactome RESTful API to generate pathway diagram for a while. When performed HTTP GET requesto to http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/pathwayDiagram/109581/png, API returns base64 encoded image. Here, 109581 is Pathway database identifier. For some reason I am unable to write it to PNG image in java.
I am using Apache Commons Codec for base64 decoding and jersey for REST client.
Could you please find out the reason why i am unable to write to image after decoding base64 string ?
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
/**
*
* @author bishwa
*/
public class ReactomeRESTJava {
public static void writeImage(String encodedString) throws IOException
{
// Decode InputcodedString
byte[] decodedByteArray = Base64.decodeBase64(encodedString);
// convert byte into string
String decodedString = new String(decodedByteArray);
//System.out.println(decodedString);
BufferedWriter out = new BufferedWriter(new FileWriter("test.png"));
out.write(decodedString);
out.close();
}
public static void main(String[] args) {
// TODO code application logic here
try
{
// Parameters ------------------------------------------------------
String baseURL="http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI"
+ "/RESTfulWS/";
//String method="POST";
String method="GET";
String url = "pathwayDiagram/109581/png";
String input= "ID=170075,176374,68557";
Client client1 = Client.create();
WebResource webRS = client1.resource(baseURL+url);
ClientResponse response = null ;
// perform GET of POST request
System.out.println("Fetching ..");
switch (method)
{
case "POST":
response = webRS.accept("application/json")
.post(ClientResponse.class, input);
break;
case "GET":
response = webRS.accept("text/plain")
.get(ClientResponse.class);
break;
}
// throw response error codes
if(response.getStatus() != 200)
{
throw new RuntimeException("Failed: HTTP error code: "
+ response.getStatus());
}
String output = response.getEntity(String.class);
//System.out.println("Output from Server ..\n");
//System.out.println(output);
// write base64 coded string to png image
System.out.println("Writing image to a file...");
writeImage(output);
} catch (RuntimeException | IOException e){}
}
}
what do you mean "I'm unable to write..." ? What is the exact error ?
The image written is blank.