/*
* © 2007-2013 eBay Inc., All Rights Reserved
* Licensed under CDDL 1.0 - http://opensource.org/licenses/cddl1.php
*/ package cpm.ebay.api.attachment.client;
/*
* CallerClient.java
*
*/
import java.io.*;
import java.util.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
public class CallerClient {
public static String PICTURE_UPLOAD = "PicUpload";
public static long totalTime;
private String m_imageFileName;
private String m_serverURL;
private String m_request;
private String m_type;
private String m_devId;
private String m_appId;
private String m_cert;
private String m_outputFile;
public CallerClient(String request, Properties props, String type) {
m_imageFileName = props.getProperty("ImageFile");
m_serverURL = props.getProperty("EPS_ServerURL");
m_request = request;
m_type = type;
m_devId = props.getProperty("DevID");
m_appId =props.getProperty("AppID");
m_cert=props.getProperty("Cert");
m_outputFile = props.getProperty("OutputFile");
}
/*
* CallerClient.execute() method
* 1. creates HttpClient and PostMethod objects
* 2. specifies HTTP header with the parameters that required for sending the UploadSiteHostedPictures API
* request
* 3. makes Part array object
* 4. executes the Http Post operation
* 5. saves returned UploadSiteHostedPictures response XML document to a local file
*/
public void execute() {
HttpClient client = new HttpClient();
PostMethod filePost = new PostMethod(m_serverURL);
try {
if(PICTURE_UPLOAD.equals(m_type)) {
filePost.addRequestHeader("X-EBAY-API-CALL-NAME","UploadSiteHostedPictures");
// include both xml message and an attachment
Part[] parts = UploadAttachment.uploadFileAsAttachment(m_imageFileName,m_request);
if(parts != null){
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
}else{
// set UTF-8 encoding
StringRequestEntity req = new StringRequestEntity(m_request,"text/plain","UTF-8");
filePost.setRequestEntity(req);
}
}
filePost.addRequestHeader("SOAPAction","");
filePost.addRequestHeader("X-EBAY-API-SESSION-CERTIFICATE",m_appId+";"+m_devId+";"+m_cert);
filePost.addRequestHeader("X-EBAY-API-COMPATIBILITY-LEVEL","685");
filePost.addRequestHeader("X-EBAY-API-DEV-NAME",m_devId);
filePost.addRequestHeader("X-EBAY-API-APP-NAME",m_appId);
filePost.addRequestHeader("X-EBAY-API-CERT-NAME",m_cert);
filePost.addRequestHeader("X-EBAY-API-SITEID","0");
filePost.addRequestHeader("X-EBAY-API-DETAIL-LEVEL","0");
long startTime = System.currentTimeMillis();
// send messages int status = client.executeMethod(filePost);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
totalTime += elapsedTime;
System.out.println("It took " + elapsedTime + "ms to execute this API\n");
// redirect the XML response to a local file saveResponseToFile(filePost,m_outputFile);
} catch(Exception ex) {
ex.toString();
}
}
public static void main(String[] args) {
Properties config = new Properties();
String propFile = "config.properties";
try {
config.load(new FileInputStream(propFile));
}catch(IOException ie) {
ie.toString();
}
try{
String token = config.getProperty("token"); String requestStr =readXmlRequest(token);
System.out.println("request" + requestStr);
CallerClient client = new CallerClient(requestStr,config,CallerClient.PICTURE_UPLOAD);
client.execute();
}catch(Exception e) {
e.printStackTrace();
}
}
public static void saveResponseToFile(PostMethod filePost, String outputFile){
//Get data as a String
try {
System.out.println( filePost.getRequestHeaders());
System.out.println(filePost.getResponseBodyAsString());
//OR as a byte array byte [] res = filePost.getResponseBody();
//write to file FileOutputStream fos= new FileOutputStream(outputFile);
fos.write(res);
//release connection filePost.releaseConnection();
}catch (Exception es){ // handle exception here
}
}
private static String readXmlRequest(String token){
String uploadPicturesXML= " <?xml version=\"1.0\" encoding=\"utf-8\"?> \n"+
"<UploadSiteHostedPicturesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"> \n\t"+
"<RequesterCredentials> \n\t\t" +
" <ebl:eBayAuthToken xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\">"+token+"</ebl:eBayAuthToken>\n\t\t"+
"</RequesterCredentials>\n\t" +
"<PictureName>testPic</PictureName>\n<PictureSet>Supersize</PictureSet>\n"+
"</UploadSiteHostedPicturesRequest>\n";
return uploadPicturesXML;
}
|