Example usage for org.apache.commons.httpclient.methods PostMethod setRequestEntity

List of usage examples for org.apache.commons.httpclient.methods PostMethod setRequestEntity

Introduction

In this page you can find the example usage for org.apache.commons.httpclient.methods PostMethod setRequestEntity.

Prototype

public void setRequestEntity(RequestEntity paramRequestEntity) 

Source Link

Usage

From source file:com.salesmanager.core.module.impl.integration.payment.PsigateTransactionImpl.java

public GatewayTransactionVO refundTransaction(IntegrationKeys keys, IntegrationProperties props,
        MerchantStore store, Order order, GatewayTransactionVO trx, Customer customer, CoreModuleService cis,
        BigDecimal amount) throws TransactionException {

    // Get refundable transaction

    PostMethod httppost = null;

    try {/*from   w  w  w  .j a va 2s  .  c om*/

        String host = cis.getCoreModuleServiceProdDomain();
        String protocol = cis.getCoreModuleServiceProdProtocol();
        String port = cis.getCoreModuleServiceProdPort();
        String url = cis.getCoreModuleServiceProdEnv();
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            host = cis.getCoreModuleServiceDevDomain();
            protocol = cis.getCoreModuleServiceDevProtocol();
            port = cis.getCoreModuleServiceDevPort();
            url = cis.getCoreModuleServiceDevEnv();
        }

        // String total = CurrencyUtil.getAmount(order.getTotal(),
        // order.getCurrency());
        String total = CurrencyUtil.getAmount(amount, order.getCurrency());

        HttpClient client = new HttpClient();

        String xml = "<?xml version=\"1.0\"?><AddressValidationRequest xml:lang=\"en-US\"><Request><TransactionReference><CustomerContext>SalesManager Data</CustomerContext><XpciVersion>1.0001</XpciVersion></TransactionReference><RequestAction>AV</RequestAction></Request>";
        StringBuffer xmldatabuffer = new StringBuffer();
        xmldatabuffer.append("<Order>");
        xmldatabuffer.append("<StoreID>").append(keys.getUserid()).append("</StoreID>");
        xmldatabuffer.append("<Passphrase>").append(keys.getTransactionKey()).append("</Passphrase>");
        xmldatabuffer.append("<PaymentType>").append("CC").append("</PaymentType>");

        // 0=Sale, 1=PreAuth, 2=PostAuth, 3=Credit, 4=Forced PostAuth

        xmldatabuffer.append("<CardAction>").append("3").append("</CardAction>");
        // For postauth only
        xmldatabuffer.append("<OrderID>").append(trx.getInternalGatewayOrderId()).append("</OrderID>");
        xmldatabuffer.append("<SubTotal>").append(total).append("</SubTotal>");
        xmldatabuffer.append("</Order>");
        /**
         * xmldatabuffer.append("<CardNumber>").append("").append(
         * "</CardNumber>");
         * xmldatabuffer.append("<CardExpMonth>").append(""
         * ).append("</CardExpMonth>");
         * xmldatabuffer.append("<CardExpYear>")
         * .append("").append("</CardExpYear>"); //CVV
         * xmldatabuffer.append("<CustomerIP>"
         * ).append("").append("</CustomerIP>");
         * xmldatabuffer.append("<CardIDNumber>"
         * ).append("").append("</CardIDNumber>");
         * xmldatabuffer.append("</Order>");
         **/

        log.debug("Psigate request " + xmldatabuffer.toString());

        httppost = new PostMethod(protocol + "://" + host + ":" + port + url);
        RequestEntity entity = new StringRequestEntity(xmldatabuffer.toString(), "text/plain", "UTF-8");
        httppost.setRequestEntity(entity);

        PsigateParsedElements pe = null;
        String stringresult = null;

        int result = client.executeMethod(httppost);
        if (result != 200) {
            log.error("Communication Error with psigate " + protocol + "://" + host + ":" + port + url);
            // throw new Exception("Psigate Gateway error ");
            TransactionException te = new TransactionException(
                    "Communication Error with psigate " + protocol + "://" + host + ":" + port + url);
            te.setErrorcode("01");
            throw te;
        }
        stringresult = httppost.getResponseBodyAsString();
        log.debug("Psigate response " + stringresult);

        pe = new PsigateParsedElements();
        Digester digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("Result/OrderID", "setOrderID", 0);
        digester.addCallMethod("Result/Approved", "setApproved", 0);
        digester.addCallMethod("Result/ErrMsg", "setErrMsg", 0);
        digester.addCallMethod("Result/ReturnCode", "setReturnCode", 0);
        digester.addCallMethod("Result/TransRefNumber", "setTransRefNumber", 0);
        digester.addCallMethod("Result/CardType", "setCardType", 0);

        Reader reader = new StringReader(stringresult);

        digester.parse(reader);

        return this.parseResponse(PaymentConstants.REFUND, xmldatabuffer.toString(), stringresult, pe, order,
                amount);

    } catch (Exception e) {
        if (e instanceof TransactionException) {
            throw (TransactionException) e;
        }
        log.error(e);
        // throw new
        // Exception("Exception occured while calling Psigate gateway " +
        // e);
        TransactionException te = new TransactionException("Communication Error with psigate ", e);
        te.setErrorcode("01");
        throw te;
    } finally {
        if (httppost != null)
            httppost.releaseConnection();
    }

}

From source file:greenfoot.export.mygame.MyGameClient.java

public final MyGameClient submit(String hostAddress, String uid, String password, String jarFileName,
        File sourceFile, File screenshotFile, int width, int height, ScenarioInfo info)
        throws UnknownHostException, IOException {
    String gameName = info.getTitle();
    String shortDescription = info.getShortDescription();
    String longDescription = info.getLongDescription();
    String updateDescription = info.getUpdateDescription();
    String gameUrl = info.getUrl();

    HttpClient httpClient = getHttpClient();
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(20 * 1000); // 20s timeout

    // Authenticate user and initiate session
    PostMethod postMethod = new PostMethod(hostAddress + "account/authenticate");

    postMethod.addParameter("user[username]", uid);
    postMethod.addParameter("user[password]", password);

    int response = httpClient.executeMethod(postMethod);

    if (response == 407 && listener != null) {
        // proxy auth required
        String[] authDetails = listener.needProxyAuth();
        if (authDetails != null) {
            String proxyHost = httpClient.getHostConfiguration().getProxyHost();
            int proxyPort = httpClient.getHostConfiguration().getProxyPort();
            AuthScope authScope = new AuthScope(proxyHost, proxyPort);
            Credentials proxyCreds = new UsernamePasswordCredentials(authDetails[0], authDetails[1]);
            httpClient.getState().setProxyCredentials(authScope, proxyCreds);

            // Now retry:
            response = httpClient.executeMethod(postMethod);
        }/*from  w  w  w  .j av  a2  s. c  o  m*/
    }

    if (response > 400) {
        error(Config.getString("export.publish.errorResponse") + " - " + response);
        return this;
    }

    // Check authentication result
    if (!handleResponse(postMethod)) {
        return this;
    }

    // Send the scenario and associated info
    List<String> tagsList = info.getTags();
    boolean hasSource = sourceFile != null;
    //determining the number of parts to send through
    //use a temporary map holder
    Map<String, String> partsMap = new HashMap<String, String>();
    if (info.isUpdate()) {
        partsMap.put("scenario[update_description]", updateDescription);
    } else {
        partsMap.put("scenario[long_description]", longDescription);
        partsMap.put("scenario[short_description]", shortDescription);
    }
    int size = partsMap.size();

    if (screenshotFile != null) {
        size = size + 1;
    }

    //base number of parts is 6
    int counter = 6;
    Part[] parts = new Part[counter + size + tagsList.size() + (hasSource ? 1 : 0)];
    parts[0] = new StringPart("scenario[title]", gameName, "UTF-8");
    parts[1] = new StringPart("scenario[main_class]", "greenfoot.export.GreenfootScenarioViewer", "UTF-8");
    parts[2] = new StringPart("scenario[width]", "" + width, "UTF-8");
    parts[3] = new StringPart("scenario[height]", "" + height, "UTF-8");
    parts[4] = new StringPart("scenario[url]", gameUrl, "UTF-8");
    parts[5] = new ProgressTrackingPart("scenario[uploaded_data]", new File(jarFileName), this);
    Iterator<String> mapIterator = partsMap.keySet().iterator();
    String key = "";
    String obj = "";
    while (mapIterator.hasNext()) {
        key = mapIterator.next().toString();
        obj = partsMap.get(key).toString();
        parts[counter] = new StringPart(key, obj, "UTF-8");
        counter = counter + 1;
    }

    if (hasSource) {
        parts[counter] = new ProgressTrackingPart("scenario[source_data]", sourceFile, this);
        counter = counter + 1;
    }
    if (screenshotFile != null) {
        parts[counter] = new ProgressTrackingPart("scenario[screenshot_data]", screenshotFile, this);
        counter = counter + 1;
    }

    int tagNum = 0;
    for (Iterator<String> i = tagsList.iterator(); i.hasNext();) {
        parts[counter] = new StringPart("scenario[tag" + tagNum++ + "]", i.next());
        counter = counter + 1;
    }

    postMethod = new PostMethod(hostAddress + "upload-scenario");
    postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams()));

    response = httpClient.executeMethod(postMethod);
    if (response > 400) {
        error(Config.getString("export.publish.errorResponse") + " - " + response);
        return this;
    }

    if (!handleResponse(postMethod)) {
        return this;
    }

    // Done.
    listener.uploadComplete(new PublishEvent(PublishEvent.STATUS));

    return this;
}

From source file:com.salesmanager.core.module.impl.integration.payment.PsigateTransactionImpl.java

private GatewayTransactionVO makeTransaction(String type, IntegrationKeys ik, IntegrationProperties props,
        MerchantStore store, Order order, Customer customer, CoreModuleService cis)
        throws TransactionException {

    PostMethod httppost = null;

    try {//  w w w .  j  av  a 2 s.c  o m

        // determine production - test environment
        String host = cis.getCoreModuleServiceProdDomain();
        String protocol = cis.getCoreModuleServiceProdProtocol();
        String port = cis.getCoreModuleServiceProdPort();
        String url = cis.getCoreModuleServiceProdEnv();
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            host = cis.getCoreModuleServiceDevDomain();
            protocol = cis.getCoreModuleServiceDevProtocol();
            port = cis.getCoreModuleServiceDevPort();
            url = cis.getCoreModuleServiceDevEnv();
        }

        HttpClient client = new HttpClient();

        String xml = "<?xml version=\"1.0\"?><AddressValidationRequest xml:lang=\"en-US\"><Request><TransactionReference><CustomerContext>SalesManager Data</CustomerContext><XpciVersion>1.0001</XpciVersion></TransactionReference><RequestAction>AV</RequestAction></Request>";
        StringBuffer xmldatabuffer = new StringBuffer();
        xmldatabuffer.append("<Order>");
        xmldatabuffer.append("<StoreID>").append(ik.getUserid()).append("</StoreID>");
        xmldatabuffer.append("<Passphrase>").append(ik.getTransactionKey()).append("</Passphrase>");
        xmldatabuffer.append("<PaymentType>").append("CC").append("</PaymentType>");
        xmldatabuffer.append("<Subtotal>").append(order.getTotal().toString()).append("</Subtotal>");

        // 0=Sale, 1=PreAuth, 2=PostAuth, 3=Credit, 4=Forced PostAuth

        xmldatabuffer.append("<CardAction>").append(type).append("</CardAction>");

        xmldatabuffer.append("<CardNumber>").append(order.getCcNumber()).append("</CardNumber>");
        xmldatabuffer.append("<CardExpMonth>").append(order.getCcExpires().substring(0, 2))
                .append("</CardExpMonth>");
        xmldatabuffer.append("<CardExpYear>")
                .append(order.getCcExpires().substring(2, order.getCcExpires().length()))
                .append("</CardExpYear>");
        // CVV
        if (props.getProperties3().equals("2")) {
            xmldatabuffer.append("<CustomerIP>").append(order.getIpAddress()).append("</CustomerIP>");
            xmldatabuffer.append("<CardIDNumber>").append("").append("</CardIDNumber>");
        }
        xmldatabuffer.append("</Order>");

        /** log data **/
        StringBuffer xmllogbuffer = new StringBuffer();
        xmllogbuffer.append("<Order>");
        xmllogbuffer.append("<StoreID>").append(ik.getUserid()).append("</StoreID>");
        xmllogbuffer.append("<Passphrase>").append(ik.getTransactionKey()).append("</Passphrase>");
        xmllogbuffer.append("<PaymentType>").append("CC").append("</PaymentType>");
        xmllogbuffer.append("<Subtotal>").append(order.getTotal().toString()).append("</Subtotal>");
        xmllogbuffer.append("<CardAction>").append(type).append("</CardAction>");
        xmllogbuffer.append("<CardNumber>").append(CreditCardUtil.maskCardNumber(order.getCcNumber()))
                .append("</CardNumber>");
        xmllogbuffer.append("<CardExpMonth>").append(order.getCcExpires().substring(0, 2))
                .append("</CardExpMonth>");
        xmllogbuffer.append("<CardExpYear>")
                .append(order.getCcExpires().substring(2, order.getCcExpires().length()))
                .append("</CardExpYear>");
        if (props.getProperties3().equals("2")) {
            xmllogbuffer.append("<CustomerIP>").append(order.getIpAddress()).append("</CustomerIP>");
            xmllogbuffer.append("<CardIDNumber>").append("").append("</CardIDNumber>");
        }
        xmllogbuffer.append("</Order>");

        log.debug("Psigate request " + xmllogbuffer.toString());

        /** log **/

        httppost = new PostMethod(protocol + "://" + host + ":" + port + url);
        RequestEntity entity = new StringRequestEntity(xmldatabuffer.toString(), "text/plain", "UTF-8");
        httppost.setRequestEntity(entity);

        PsigateParsedElements pe = null;
        String stringresult = null;

        int result = client.executeMethod(httppost);
        if (result != 200) {
            log.error("Communication Error with psigate " + protocol + "://" + host + ":" + port + url);
            throw new Exception(
                    "Communication Error with psigate " + protocol + "://" + host + ":" + port + url);
        }
        stringresult = httppost.getResponseBodyAsString();
        log.debug("Psigate response " + stringresult);

        pe = new PsigateParsedElements();
        Digester digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("Result/OrderID", "setOrderID", 0);
        digester.addCallMethod("Result/Approved", "setApproved", 0);
        digester.addCallMethod("Result/ErrMsg", "setErrMsg", 0);
        digester.addCallMethod("Result/ReturnCode", "setReturnCode", 0);
        digester.addCallMethod("Result/TransRefNumber", "setTransRefNumber", 0);
        digester.addCallMethod("Result/CardType", "setCardType", 0);

        Reader reader = new StringReader(stringresult);

        digester.parse(reader);

        if (type.equals("0")) {

            return this.parseResponse(PaymentConstants.CAPTURE, xmldatabuffer.toString(), stringresult, pe,
                    order, order.getTotal());

        } else {

            return this.parseResponse(PaymentConstants.PREAUTH, xmldatabuffer.toString(), stringresult, pe,
                    order, order.getTotal());

        }

    } catch (Exception e) {
        if (e instanceof TransactionException) {
            throw (TransactionException) e;
        }
        log.error(e);
        TransactionException te = new TransactionException("Psigate Gateway error ", e);
        te.setErrorcode("01");
        throw te;
    } finally {
        if (httppost != null)
            httppost.releaseConnection();
    }

}

From source file:edu.harvard.iq.dvn.core.web.servlet.FileDownloadServlet.java

private String dvnRemoteAuth(String remoteHost) {
    // if successful, this method will return the JSESSION string
    // for the authenticated session on the remote DVN.

    String remoteJsessionid = null;
    String remoteDvnUser = null;/* www  .ja  v a2  s. co  m*/
    String remoteDvnPw = null;

    GetMethod loginGetMethod = null;
    PostMethod loginPostMethod = null;

    RemoteAccessAuth remoteAuth = studyService.lookupRemoteAuthByHost(remoteHost);

    if (remoteAuth == null) {
        return null;
    }

    remoteDvnUser = remoteAuth.getAuthCred1();
    remoteDvnPw = remoteAuth.getAuthCred2();

    if (remoteDvnUser == null || remoteDvnPw == null) {
        return null;
    }

    int status = 0;

    try {

        String remoteAuthUrl = "http://" + remoteHost + "/dvn/faces/login/LoginPage.xhtml";
        loginGetMethod = new GetMethod(remoteAuthUrl);
        loginGetMethod.setFollowRedirects(false);
        status = getClient().executeMethod(loginGetMethod);

        InputStream in = loginGetMethod.getResponseBodyAsStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(in));

        String line = null;

        String viewstate = null;

        String regexpJsession = "jsessionid=([^\"?&]*)";
        String regexpViewState = "ViewState\" value=\"([^\"]*)\"";

        Pattern patternJsession = Pattern.compile(regexpJsession);
        Pattern patternViewState = Pattern.compile(regexpViewState);

        Matcher matcher = null;

        while ((line = rd.readLine()) != null) {
            matcher = patternJsession.matcher(line);
            if (matcher.find()) {
                remoteJsessionid = matcher.group(1);
            }
            matcher = patternViewState.matcher(line);
            if (matcher.find()) {
                viewstate = matcher.group(1);
            }
        }

        rd.close();
        loginGetMethod.releaseConnection();

        if (remoteJsessionid != null) {

            // We have found Jsession;
            // now we can log in,
            // has to be a POST method:

            loginPostMethod = new PostMethod(remoteAuthUrl + ";jsessionid=" + remoteJsessionid);
            loginPostMethod.setFollowRedirects(false);

            Part[] parts = { new StringPart("vanillaLoginForm:vdcId", ""),
                    new StringPart("vanillaLoginForm:username", remoteDvnUser),
                    new StringPart("vanillaLoginForm:password", remoteDvnPw),
                    new StringPart("vanillaLoginForm_hidden", "vanillaLoginForm_hidden"),
                    new StringPart("vanillaLoginForm:button1", "Log in"),
                    new StringPart("javax.faces.ViewState", viewstate) };

            loginPostMethod.setRequestEntity(new MultipartRequestEntity(parts, loginPostMethod.getParams()));
            loginPostMethod.addRequestHeader("Cookie", "JSESSIONID=" + remoteJsessionid);
            status = getClient().executeMethod(loginPostMethod);

            String redirectLocation = null;

            if (status == 302) {
                for (int i = 0; i < loginPostMethod.getResponseHeaders().length; i++) {
                    String headerName = loginPostMethod.getResponseHeaders()[i].getName();
                    if (headerName.equals("Location")) {
                        redirectLocation = loginPostMethod.getResponseHeaders()[i].getValue();
                    }
                }
            }

            loginPostMethod.releaseConnection();
            int counter = 0;

            int redirectLimit = 20; // number of redirects we are willing to follow before we give up.

            while (status == 302 && counter < redirectLimit) {

                if (counter > 0) {
                    for (int i = 0; i < loginGetMethod.getResponseHeaders().length; i++) {
                        String headerName = loginGetMethod.getResponseHeaders()[i].getName();
                        if (headerName.equals("Location")) {
                            redirectLocation = loginGetMethod.getResponseHeaders()[i].getValue();
                        }
                    }
                }

                // try following redirects until we get a static page,
                // or until we exceed the hoop limit.
                if (redirectLocation.matches(".*TermsOfUsePage.*")) {
                    loginGetMethod = remoteAccessTOU(redirectLocation + "&clicker=downloadServlet",
                            remoteJsessionid, null, null);
                    if (loginGetMethod != null) {
                        status = loginGetMethod.getStatusCode();
                    }
                } else {
                    loginGetMethod = new GetMethod(redirectLocation);
                    loginGetMethod.setFollowRedirects(false);
                    loginGetMethod.addRequestHeader("Cookie", "JSESSIONID=" + remoteJsessionid);
                    status = getClient().executeMethod(loginGetMethod);

                    //InputStream in = loginGetMethod.getResponseBodyAsStream();
                    //BufferedReader rd = new BufferedReader(new InputStreamReader(in));
                    //rd.close();
                    loginGetMethod.releaseConnection();
                    counter++;
                }
            }
        }
    } catch (IOException ex) {
        if (loginGetMethod != null) {
            loginGetMethod.releaseConnection();
        }
        if (loginPostMethod != null) {
            loginPostMethod.releaseConnection();
        }
        return null;
    }

    return remoteJsessionid;
}

From source file:es.juntadeandalucia.mapea.proxy.ProxyRedirect.java

/***************************************************************************
 * Process the HTTP Post request//from ww w . j a  va2 s.  c  om
 ***************************************************************************/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    boolean checkedContent = false;
    boolean legend = false;
    String strErrorMessage = "";
    String serverUrl = request.getParameter("url");
    log.info("POST param serverUrl: " + serverUrl);
    if (serverUrl.startsWith("legend")) {
        serverUrl = serverUrl.replace("legend", "");
        serverUrl = serverUrl.replace("?", "&");
        serverUrl = serverUrl.replaceFirst("&", "?");
        legend = true;
    }
    serverUrl = checkTypeRequest(serverUrl);
    // log.info("serverUrl ckecked: " + serverUrl);
    if (!serverUrl.equals("ERROR")) {
        if (serverUrl.startsWith("http://") || serverUrl.startsWith("https://")) {
            PostMethod httppost = null;
            try {
                if (log.isDebugEnabled()) {
                    Enumeration<?> e = request.getHeaderNames();
                    while (e.hasMoreElements()) {
                        String name = (String) e.nextElement();
                        String value = request.getHeader(name);
                        log.debug("request header:" + name + ":" + value);
                    }
                }
                HttpClient client = new HttpClient();
                httppost = new PostMethod(serverUrl);
                // PATH
                httppost.setDoAuthentication(false);
                httppost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                        new DefaultHttpMethodRetryHandler(3, false));
                // FIN_PATH
                // PATH_MAPEAEDITA_SECURITY - AP
                // PATCH_TICKET_MJM-20112405-POST
                String authorizationValue = request.getHeader(AUTHORIZATION); // ADD_SECURITY_20091210
                if (authorizationValue == null) {
                    // The 'Authorization' header must be in this form ->
                    // Authorization: Basic <encodedLogin>
                    // 'encodedLogin' is a string in the form 'user:pass'
                    // that has been encoded by way of the Base64 algorithm.
                    // More info on this can be found at
                    // http://en.wikipedia.org/wiki/Basic_access_authentication
                    String user = (String) request.getSession().getAttribute("user");
                    String pass = (String) request.getSession().getAttribute("pass");
                    if (user != null && pass != null) {
                        String userAndPass = user + ":" + pass;
                        String encodedLogin = new String(
                                org.apache.commons.codec.binary.Base64.encodeBase64(userAndPass.getBytes()));
                        httppost.addRequestHeader(AUTHORIZATION, "Basic " + encodedLogin);
                    } else { // MJM - 20110520
                        String ticketParameter = request.getParameter("ticket");
                        if (ticketParameter != null) {
                            ticketParameter = ticketParameter.trim();
                            if (!ticketParameter.isEmpty()) {
                                Ticket ticket = TicketFactory.createInstance();
                                try {
                                    Map<String, String> props = ticket.getProperties(ticketParameter);
                                    user = props.get("user");
                                    pass = props.get("pass");
                                    String userAndPass = user + ":" + pass;
                                    String encodedLogin = new String(org.apache.commons.codec.binary.Base64
                                            .encodeBase64(userAndPass.getBytes()));
                                    httppost.addRequestHeader(AUTHORIZATION, "Basic " + encodedLogin);
                                } catch (Exception e) {
                                    log.info("-------------------------------------------");
                                    log.info("EXCEPCTION THROWED BY PROXYREDIRECT CLASS");
                                    log.info("METHOD: doPost");
                                    log.info("TICKET VALUE: " + ticketParameter);
                                    log.info("-------------------------------------------");
                                }
                            }
                        }
                    }
                } else {
                    httppost.addRequestHeader(AUTHORIZATION, authorizationValue);
                }
                // FIN_PATH_TICKET_MJM-20112405-POST
                // FIN_PATH_MAPEAEDITA_SECURITY - AP
                String body = inputStreamAsString(request.getInputStream());
                StringRequestEntity bodyEntity = new StringRequestEntity(body, null, null);
                if (0 == httppost.getParameters().length) {
                    log.debug("No Name/Value pairs found ... pushing as received"); // PATCH
                    httppost.setRequestEntity(bodyEntity); // PATCH
                }
                if (log.isDebugEnabled()) {
                    log.debug("Body = " + body);
                    NameValuePair[] nameValuePairs = httppost.getParameters();
                    log.debug("NameValuePairs found: " + nameValuePairs.length);
                    for (int i = 0; i < nameValuePairs.length; ++i) {
                        log.debug("parameters:" + nameValuePairs[i].toString());
                    }
                }
                if (!legend)
                    client.getParams().setParameter("http.protocol.content-charset", "UTF-8");
                if (soap) {
                    httppost.addRequestHeader("SOAPAction", serverUrl);
                }
                client.executeMethod(httppost);
                // PATH_FOLLOW_REDIRECT_POST
                int j = 0;
                String redirectLocation;
                Header locationHeader = httppost.getResponseHeader("location");
                while (locationHeader != null && j < numMaxRedirects) {
                    redirectLocation = locationHeader.getValue();
                    // AGG 20111304 Aadimos el cuerpo de la peticin POST a
                    // la nueva peticin redirigida
                    // String bodyPost = httppost.getResponseBodyAsString();
                    StringRequestEntity bodyEntityPost = new StringRequestEntity(body, null, null);
                    httppost.releaseConnection();
                    httppost = new PostMethod(redirectLocation);
                    // AGG 20110912 Aadidas cabeceras peticin SOAP
                    if (redirectLocation.toLowerCase().contains("wsdl")) {
                        redirectLocation = serverUrl.replace("?wsdl", "");
                        httppost.addRequestHeader("SOAPAction", redirectLocation);
                        httppost.addRequestHeader("Content-type", "text/xml");
                    }
                    httppost.setRequestEntity(bodyEntityPost);
                    client.executeMethod(httppost);
                    locationHeader = httppost.getResponseHeader("location");
                    j++;
                }
                log.info("Number of followed redirections: " + j);
                if (locationHeader != null && j == numMaxRedirects) {
                    log.error("The maximum number of redirects (" + numMaxRedirects + ") is exceed.");
                }
                // FIN_PATH_FOLLOW_REDIRECT_POST
                if (log.isDebugEnabled()) {
                    Header[] responseHeaders = httppost.getResponseHeaders();
                    for (int i = 0; i < responseHeaders.length; ++i) {
                        String headerName = responseHeaders[i].getName();
                        String headerValue = responseHeaders[i].getValue();
                        log.debug("responseHeaders:" + headerName + "=" + headerValue);
                    }
                }
                // dump response to out
                if (httppost.getStatusCode() == HttpStatus.SC_OK) {
                    // PATH_SECURITY_PROXY - AG
                    Header[] respHeaders = httppost.getResponseHeaders();
                    int compSize = httppost.getResponseBody().length;
                    ArrayList<Header> headerList = new ArrayList<Header>(Arrays.asList(respHeaders));
                    String headersString = headerList.toString();
                    checkedContent = checkContent(headersString, compSize, serverUrl);
                    // FIN_PATH_SECURITY_PROXY - AG
                    if (checkedContent == true) {
                        /*
                         * checks if it has requested an getfeatureinfo to modify the response content
                         * type.
                         */
                        String requesteredUrl = request.getParameter("url");
                        if (GETINFO_PLAIN_REGEX.matcher(requesteredUrl).matches()) {
                            response.setContentType("text/plain");
                        } else if (GETINFO_GML_REGEX.matcher(requesteredUrl).matches()) {
                            response.setContentType("application/gml+xml");
                        } else if (GETINFO_HTML_REGEX.matcher(requesteredUrl).matches()) {
                            response.setContentType("text/html");
                        } else if (requesteredUrl.toLowerCase().contains("mapeaop=geosearch")
                                || requesteredUrl.toLowerCase().contains("mapeaop=geoprint")) {
                            response.setContentType("application/json");
                        } else {
                            response.setContentType("text/xml");
                        }
                        if (legend) {
                            String responseBody = httppost.getResponseBodyAsString();
                            if (responseBody.contains("ServiceExceptionReport")
                                    && serverUrl.contains("LegendGraphic")) {
                                response.sendRedirect("Componente/img/blank.gif");
                            } else {
                                response.setContentLength(responseBody.length());
                                PrintWriter out = response.getWriter();
                                out.print(responseBody);
                                response.flushBuffer();
                            }
                        } else {
                            // Patch_AGG 20112505 Prevents IE cache
                            if (request.getProtocol().compareTo("HTTP/1.0") == 0) {
                                response.setHeader("Pragma", "no-cache");
                            } else if (request.getProtocol().compareTo("HTTP/1.1") == 0) {
                                response.setHeader("Cache-Control", "no-cache");
                            }
                            response.setDateHeader("Expires", -1);
                            // END patch
                            // Copy request to response
                            InputStream st = httppost.getResponseBodyAsStream();
                            final ServletOutputStream sos = response.getOutputStream();
                            IOUtils.copy(st, sos);
                        }
                    } else {
                        strErrorMessage += errorType;
                        log.error(strErrorMessage);
                    }
                } else if (httppost.getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
                    response.setStatus(HttpStatus.SC_UNAUTHORIZED);
                    response.addHeader(WWW_AUTHENTICATE,
                            httppost.getResponseHeader(WWW_AUTHENTICATE).getValue());
                } else {
                    strErrorMessage = "Unexpected failure: ".concat(httppost.getStatusLine().toString())
                            .concat(" ").concat(httppost.getResponseBodyAsString());
                    log.error("Unexpected failure: " + httppost.getStatusLine().toString());
                }
                httppost.releaseConnection();
                // AGG 20110927 Avoid Throwable (change it with exceptions)
            } catch (Exception e) {
                log.error("Error al tratar el contenido de la peticion: " + e.getMessage(), e);
            } finally {
                if (httppost != null) {
                    httppost.releaseConnection();
                }
            }
        } else {
            strErrorMessage += "Only HTTP(S) protocol supported";
            log.error("Only HTTP(S) protocol supported");
            // throw new
            // ServletException("only HTTP(S) protocol supported");
        }
    }
    // There are errors.
    if (!strErrorMessage.equals("") || serverUrl.equals("ERROR")) {
        if (strErrorMessage.equals("") == true) {
            strErrorMessage = "Error en el parametro url de entrada";
        }
        // String errorXML = strErrorMessage;
        String errorXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><error><descripcion>" + strErrorMessage
                + "</descripcion></error>";
        response.setContentType("text/xml");
        try {
            PrintWriter out = response.getWriter();
            out.print(errorXML);
            response.flushBuffer();
        } catch (Exception e) {
            log.error(e);
        }
    }
    log.info("-------- End POST method --------");
}

From source file:com.zimbra.client.ZMailbox.java

/**
 * Uploads HTTP post parts to <tt>FileUploadServlet</tt>.
 * @return the attachment id/*from  w w w .  ja v  a  2s.c o m*/
 */
public String uploadAttachments(Part[] parts, int msTimeout) throws ServiceException {
    String aid = null;

    URI uri = getUploadURI();
    HttpClient client = getHttpClient(uri);

    // make the post
    PostMethod post = new PostMethod(uri.toString());
    post.getParams().setSoTimeout(msTimeout);

    int statusCode;
    try {
        if (mCsrfToken != null) {
            post.setRequestHeader(Constants.CSRF_TOKEN, mCsrfToken);
        }
        post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));
        statusCode = HttpClientUtil.executeMethod(client, post);

        // parse the response
        if (statusCode == HttpServletResponse.SC_OK) {
            String response = post.getResponseBodyAsString();
            aid = getAttachmentId(response);
        } else if (statusCode == HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE) {
            throw ZClientException.UPLOAD_SIZE_LIMIT_EXCEEDED("upload size limit exceeded", null);
        } else {
            throw ZClientException.UPLOAD_FAILED("Attachment post failed, status=" + statusCode, null);
        }
    } catch (IOException e) {
        throw ZClientException.IO_ERROR(e.getMessage(), e);
    } finally {
        post.releaseConnection();
    }
    return aid;
}

From source file:com.salesmanager.core.module.impl.integration.payment.AuthorizeNetTransactionImpl.java

private GatewayTransactionVO makeTransaction(String type, IntegrationKeys ik, IntegrationProperties props,
        MerchantStore store, Order order, Customer customer, CoreModuleService cis)
        throws TransactionException {

    PostMethod httppost = null;
    try {/*  w  w  w.  java  2s. c  om*/

        String host = cis.getCoreModuleServiceProdDomain();
        String protocol = cis.getCoreModuleServiceProdProtocol();
        String port = cis.getCoreModuleServiceProdPort();
        String url = cis.getCoreModuleServiceProdEnv();
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            host = cis.getCoreModuleServiceDevDomain();
            protocol = cis.getCoreModuleServiceDevProtocol();
            port = cis.getCoreModuleServiceDevPort();
            url = cis.getCoreModuleServiceDevEnv();
        }

        // sb builds the nv pair to authorize net
        StringBuffer sb = new StringBuffer();

        // mandatory name/value pairs for all AIM CC transactions
        // as well as some "good to have" values
        sb.append("x_login=").append(ik.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_tran_key=").append(ik.getTransactionKey()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_version=3.1&");// set to required in the specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sb.append("x_test_request=TRUE&"); // for testing
        }

        sb.append("x_method=CC&");// required, CC or ECHECK
        sb.append("x_type=").append(type).append("&");

        // need ccard number
        sb.append("x_card_num=").append(order.getCcNumber()).append("&");
        sb.append("x_exp_date=").append(order.getCcExpires()).append("&");
        sb.append("x_amount=").append(order.getTotal()).append("&");
        if (props.getProperties3().equals("2")) {
            sb.append("x_card_code=").append(order.getCcCvv()).append("&");
        }

        sb.append("x_delim_data=TRUE&");
        sb.append("x_delim_char=|&");
        sb.append("x_relay_response=FALSE&");

        // sx builds the xml for persisting local
        StringBuffer sx = new StringBuffer();

        sx.append("<transaction>");

        sx.append("<x_login>").append(ik.getUserid()).append("</x_login>"); // replace
        // with
        // your
        // own
        sx.append("<x_tran_key>").append(ik.getTransactionKey()).append("</x_tran_key>"); // replace with your own
        sx.append("<x_version>3.1</x_version>");// set to required in the
        // specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sx.append("<x_test_request>TRUE</x_test_request>"); // for
            // testing
        }

        sx.append("<x_method>CC</x_method>");// required, CC or ECHECK
        sx.append("<x_type>AUTH_ONLY</x_type>");

        // need ccard number
        sx.append("<x_card_num>").append(order.getCcNumber()).append("</x_card_num>");// at least 4 last card digit
        sx.append("<x_exp_date>").append(order.getCcExpires()).append("</x_exp_date>");
        sx.append("<x_amount>").append(order.getTotal()).append("</x_amount>");
        if (props.getProperties3().equals("2")) {
            sx.append("<x_card_code>").append(order.getCcCvv()).append("</x_card_code>");
        }

        sx.append("<x_delim_data>TRUE</x_delim_data>");
        sx.append("<x_delim_char>|</x_delim_char>");
        sx.append("<x_relay_response>FALSE</x_relay_response>");

        sx.append("</transaction>");

        /** debug **/
        // sb builds the nv pair to authorize net
        StringBuffer sblog = new StringBuffer();
        sblog.append("x_login=").append(ik.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sblog.append("x_tran_key=").append(ik.getTransactionKey()).append("&"); // replace                                                   // own
        sblog.append("x_version=3.1&");// set to required in the specs
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sblog.append("x_test_request=TRUE&"); // for testing
        }

        sblog.append("x_method=CC&");// required, CC or ECHECK
        sblog.append("x_type=").append(type).append("&");
        sblog.append("x_card_num=").append(CreditCardUtil.maskCardNumber(order.getCcNumber())).append("&");
        sblog.append("x_exp_date=").append(order.getCcExpires()).append("&");
        sblog.append("x_amount=").append(order.getTotal()).append("&");
        if (props.getProperties3().equals("2")) {
            sblog.append("x_card_code=").append(order.getCcCvv()).append("&");
        }
        sblog.append("x_delim_data=TRUE&");
        sblog.append("x_delim_char=|&");
        sblog.append("x_relay_response=FALSE&");

        log.debug("Transaction sent -> " + sblog.toString());
        /**
         * log
         */

        HttpClient client = new HttpClient();

        httppost = new PostMethod(protocol + "://" + host + ":" + port + url);
        RequestEntity entity = new StringRequestEntity(sb.toString(), "text/plain", "UTF-8");
        httppost.setRequestEntity(entity);

        String stringresult = null;

        int result = client.executeMethod(httppost);
        if (result != 200) {
            log.error("Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);
            throw new Exception(
                    "Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);
        }

        // stringresult = httppost.getResponseBodyAsString();
        // log.debug("AuthorizeNet response " +stringresult);

        stringresult = httppost.getResponseBodyAsString();
        log.debug("AuthorizeNet response " + stringresult);

        StringBuffer appendresult = new StringBuffer().append(order.getTotal()).append("|")
                .append(stringresult);

        // Format to xml
        //
        String finalresult = this.readresponse("|", appendresult.toString());

        AuthorizeNetParsedElements pe = new AuthorizeNetParsedElements();
        Digester digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("transaction/transactionid", "setTransactionId", 0);
        digester.addCallMethod("transaction/approvalcode", "setApprovalCode", 0);
        digester.addCallMethod("transaction/responsecode", "setResponseCode", 0);
        digester.addCallMethod("transaction/amount", "setTransactionAmount", 0);
        digester.addCallMethod("transaction/reasontext", "setReasontext", 0);
        digester.addCallMethod("transaction/reasoncode", "setReasonCode", 0);

        Reader reader = new StringReader(finalresult);

        digester.parse(reader);

        // check if you need it
        // pe.setTransactionId(trx.getTransactionDetails().getMerchantPaymentGwOrderid());//BECAUSE
        // NOT RETURNED FROM AUTHORIZE NET !!!!

        if (type.equals("AUTH_CAPTURE")) {

            return this.parseResponse(PaymentConstants.SALE, sx.toString(), finalresult, pe, order,
                    order.getTotal());

        } else {// AUTH_ONLY

            return this.parseResponse(PaymentConstants.PREAUTH, sx.toString(), finalresult, pe, order,
                    order.getTotal());

        }

    } catch (Exception e) {
        if (e instanceof TransactionException) {
            throw (TransactionException) e;
        }
        log.error(e);

        TransactionException te = new TransactionException("AuthorizeNet Gateway error ", e);
        throw te;
    } finally {
        if (httppost != null) {
            httppost.releaseConnection();
        }
    }

}

From source file:com.salesmanager.core.module.impl.integration.payment.AuthorizeNetTransactionImpl.java

public GatewayTransactionVO refundTransaction(IntegrationKeys keys, IntegrationProperties props,
        MerchantStore store, Order order, GatewayTransactionVO trx, Customer customer, CoreModuleService cis,
        BigDecimal amount) throws TransactionException {

    PostMethod httppost = null;
    try {// ww  w. j  av a  2  s  .co  m

        String host = cis.getCoreModuleServiceProdDomain();
        String protocol = cis.getCoreModuleServiceProdProtocol();
        String port = cis.getCoreModuleServiceProdPort();
        String url = cis.getCoreModuleServiceProdEnv();
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            host = cis.getCoreModuleServiceDevDomain();
            protocol = cis.getCoreModuleServiceDevProtocol();
            port = cis.getCoreModuleServiceDevPort();
            url = cis.getCoreModuleServiceDevEnv();
        }

        // parse sent elements required
        AuthorizeNetParsedElements pe = null;
        pe = new AuthorizeNetParsedElements();
        Digester digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("transaction/x_card_num", "setCardnumber", 0);
        digester.addCallMethod("transaction/approvalcode", "setApprovalCode", 0);
        digester.addCallMethod("transaction/x_exp_date", "setExpiration", 0);
        digester.addCallMethod("transaction/x_amount", "setTransactionAmount", 0);
        digester.addCallMethod("transaction/x_card_code", "setCvv", 0);

        Reader reader = new StringReader(trx.getTransactionDetails().getGatewaySentDecrypted().trim());

        digester.parse(reader);

        StringBuffer sb = new StringBuffer();

        // mandatory name/value pairs for all AIM CC transactions
        // as well as some "good to have" values
        sb.append("x_login=").append(keys.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_tran_key=").append(keys.getTransactionKey()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_version=3.1&");// set to required in the specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sb.append("x_test_request=TRUE&"); // for testing
        }

        sb.append("x_method=CC&");// required, CC or ECHECK
        sb.append("x_type=CREDIT&");

        sb.append("x_card_num=").append(pe.getCardnumber()).append("&");// at
        // least
        // 4
        // last
        // card
        // digit
        sb.append("x_exp_date=").append(pe.getExpiration()).append("&");
        sb.append("x_amount=").append(amount.toString()).append("&");
        if (pe.getCvv() != null) {
            sb.append("x_card_code=").append(pe.getCvv()).append("&");
        }
        sb.append("x_delim_data=TRUE&");
        sb.append("x_delim_char=|&");
        sb.append("x_relay_response=FALSE&");
        sb.append("x_trans_id=").append(trx.getTransactionID()).append("&");

        /** debug **/
        StringBuffer sblog = new StringBuffer();

        // mandatory name/value pairs for all AIM CC transactions
        // as well as some "good to have" values
        sblog.append("x_login=").append(keys.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sblog.append("x_tran_key=").append(keys.getTransactionKey()).append("&"); // replace                                                   // own
        sblog.append("x_version=3.1&");// set to required in the specs
        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sblog.append("x_test_request=TRUE&"); // for testing
        }
        sblog.append("x_method=CC&");// required, CC or ECHECK
        sblog.append("x_type=CREDIT&");
        sblog.append("x_card_num=").append(pe.getCardnumber()).append("&");// at
        // least
        // 4
        // last
        // card
        // digit
        sblog.append("x_exp_date=").append(pe.getExpiration()).append("&");
        sblog.append("x_amount=").append(amount.toString()).append("&");
        if (pe.getCvv() != null) {
            sblog.append("x_card_code=").append(pe.getCvv()).append("&");
        }
        sblog.append("x_delim_data=TRUE&");
        sblog.append("x_delim_char=|&");
        sblog.append("x_relay_response=FALSE&");
        sblog.append("x_trans_id=").append(trx.getTransactionID()).append("&");

        log.debug("Transaction sent -> " + sblog.toString());
        /** debug **/

        // sx builds the xml for persisting local
        StringBuffer sx = new StringBuffer();

        sx.append("<transaction>");
        sx.append("<x_login>").append(keys.getUserid()).append("</x_login>"); // replace
        // with
        // your
        // own
        sx.append("<x_tran_key>").append(keys.getTransactionKey()).append("</x_tran_key>"); // replace with your own
        sx.append("<x_version>3.1</x_version>");// set to required in the
        // specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sx.append("<x_test_request>TRUE</x_test_request>"); // for
            // testing
        }

        sx.append("<x_method>CC</x_method>");// required, CC or ECHECK
        sx.append("<x_type>CREDIT</x_type>");

        // need ccard number
        sx.append("<x_card_num>").append(pe.getCardnumber()).append("</x_card_num>");// at least 4 last card digit
        sx.append("<x_exp_date>").append(pe.getExpiration()).append("</x_exp_date>");
        sx.append("<x_amount>").append(pe.getTransactionAmount()).append("</x_amount>");
        if (pe.getCvv() != null) {
            sx.append("<x_card_code>").append(pe.getCvv()).append("</x_card_code>");
        }

        sx.append("<x_delim_data>TRUE</x_delim_data>");
        sx.append("<x_delim_char>|</x_delim_char>");
        sx.append("<x_relay_response>FALSE</x_relay_response>");
        sx.append("<x_trans_id>").append(trx.getTransactionID()).append("</x_trans_id>");
        sx.append("</transaction>");

        HttpClient client = new HttpClient();

        httppost = new PostMethod(protocol + "://" + host + ":" + port + url);
        RequestEntity entity = new StringRequestEntity(sb.toString(), "text/plain", "UTF-8");
        httppost.setRequestEntity(entity);

        String stringresult = null;

        int result = client.executeMethod(httppost);
        if (result != 200) {
            log.error("Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);
            throw new Exception(
                    "Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);
        }
        stringresult = httppost.getResponseBodyAsString();
        log.debug("AuthorizeNet response " + stringresult);

        StringBuffer appendresult = new StringBuffer().append(order.getTotal()).append("|")
                .append(stringresult);

        // Format to xml
        String finalresult = this.readresponse("|", appendresult.toString());

        pe = new AuthorizeNetParsedElements();
        digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("transaction/transactionid", "setTransactionId", 0);
        digester.addCallMethod("transaction/approvalcode", "setApprovalCode", 0);
        digester.addCallMethod("transaction/responsecode", "setResponseCode", 0);
        digester.addCallMethod("transaction/amount", "setTransactionAmount", 0);
        digester.addCallMethod("transaction/reasontext", "setReasontext", 0);
        digester.addCallMethod("transaction/reasoncode", "setReasonCode", 0);

        reader = new StringReader(finalresult);

        digester.parse(reader);

        pe.setTransactionId(trx.getTransactionDetails().getMerchantPaymentGwOrderid());// BECAUSE NOT RETURNED FROM
        // AUTHORIZE NET !!!!

        return this.parseResponse(PaymentConstants.REFUND, sx.toString(), finalresult, pe, order, amount);

    } catch (Exception e) {
        if (e instanceof TransactionException) {
            throw (TransactionException) e;
        }
        log.error(e);

        TransactionException te = new TransactionException("AuthorizeNet Gateway error ", e);
        te.setErrorcode("01");
        throw te;
    } finally {
        if (httppost != null) {
            httppost.releaseConnection();
        }
    }

}

From source file:com.salesmanager.core.module.impl.integration.payment.AuthorizeNetTransactionImpl.java

public GatewayTransactionVO captureTransaction(IntegrationKeys ik, IntegrationProperties props,
        MerchantStore store, Order order, GatewayTransactionVO trx, Customer customer, CoreModuleService cis)
        throws TransactionException {

    PostMethod httppost = null;
    try {// w w w. ja  va 2 s.c  o m

        if (cis == null) {
            // throw new
            // Exception("Central integration services not configured for "
            // + PaymentConstants.PAYMENT_LINKPOINTNAME + " and country id "
            // + origincountryid);
            log.error("Central integration services not configured for "
                    + PaymentConstants.PAYMENT_AUTHORIZENETNAME + " and country id " + store.getCountry());
            TransactionException te = new TransactionException(
                    "Central integration services not configured for "
                            + PaymentConstants.PAYMENT_AUTHORIZENETNAME + " and country id "
                            + store.getCountry());
            te.setErrorcode("01");
            throw te;
        }

        String host = cis.getCoreModuleServiceProdDomain();
        String protocol = cis.getCoreModuleServiceProdProtocol();
        String port = cis.getCoreModuleServiceProdPort();
        String url = cis.getCoreModuleServiceProdEnv();
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            host = cis.getCoreModuleServiceDevDomain();
            protocol = cis.getCoreModuleServiceDevProtocol();
            port = cis.getCoreModuleServiceDevPort();
            url = cis.getCoreModuleServiceDevEnv();
        }

        // parse sent elements required
        AuthorizeNetParsedElements pe = null;
        pe = new AuthorizeNetParsedElements();
        Digester digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("transaction/x_card_num", "setCardnumber", 0);
        digester.addCallMethod("transaction/approvalcode", "setApprovalCode", 0);
        digester.addCallMethod("transaction/x_exp_date", "setExpiration", 0);
        digester.addCallMethod("transaction/x_amount", "setTransactionAmount", 0);
        digester.addCallMethod("transaction/x_card_code", "setCvv", 0);

        Reader reader = new StringReader(trx.getTransactionDetails().getGatewaySentDecrypted().trim());

        digester.parse(reader);

        // sb builds the nv pair to authorize net
        StringBuffer sb = new StringBuffer();

        // mandatory name/value pairs for all AIM CC transactions
        // as well as some "good to have" values
        sb.append("x_login=").append(ik.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_tran_key=").append(ik.getTransactionKey()).append("&"); // replace
        // with
        // your
        // own
        sb.append("x_version=3.1&");// set to required in the specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sb.append("x_test_request=TRUE&"); // for testing
        }

        sb.append("x_method=CC&");// required, CC or ECHECK
        sb.append("x_type=CAPTURE_ONLY&");

        // need ccard number
        sb.append("x_card_num=").append(pe.getCardnumber()).append("&");// at
        // least
        // 4
        // last
        // card
        // digit
        sb.append("x_exp_date=").append(pe.getExpiration()).append("&");
        sb.append("x_amount=").append(pe.getTransactionAmount()).append("&");
        if (pe.getCvv() != null) {
            sb.append("x_card_code=").append(pe.getCvv()).append("&");
        }

        sb.append("x_delim_data=TRUE&");
        sb.append("x_delim_char=|&");
        sb.append("x_relay_response=FALSE&");
        sb.append("x_auth_code=").append(trx.getInternalGatewayOrderId()).append("&");

        /** debug **/
        StringBuffer sblog = new StringBuffer();
        sblog.append("x_login=").append(ik.getUserid()).append("&"); // replace
        // with
        // your
        // own
        sblog.append("x_tran_key=").append(ik.getTransactionKey()).append("&"); // replace                                                // own
        sblog.append("x_version=3.1&");// set to required in the specs
        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sblog.append("x_test_request=TRUE&"); // for testing
        }
        sblog.append("x_method=CC&");// required, CC or ECHECK
        sblog.append("x_type=CAPTURE_ONLY&");
        // need ccard number
        sblog.append("x_card_num=").append(CreditCardUtil.maskCardNumber(pe.getCardnumber())).append("&");// at
        // least
        // 4
        // last
        // card
        // digit
        sblog.append("x_exp_date=").append(pe.getExpiration()).append("&");
        sblog.append("x_amount=").append(pe.getTransactionAmount()).append("&");
        if (pe.getCvv() != null) {
            sblog.append("x_card_code=").append(pe.getCvv()).append("&");
        }
        sblog.append("x_delim_data=TRUE&");
        sblog.append("x_delim_char=|&");
        sblog.append("x_relay_response=FALSE&");
        sblog.append("x_auth_code=").append(trx.getInternalGatewayOrderId()).append("&");

        log.debug(sblog.toString());
        /** log **/

        // sx builds the xml for persisting local
        StringBuffer sx = new StringBuffer();

        sx.append("<transaction>");
        sx.append("<x_login>").append(ik.getUserid()).append("</x_login>"); // replace
        // with
        // your
        // own
        sx.append("<x_tran_key>").append(ik.getTransactionKey()).append("</x_tran_key>"); // replace with your own
        sx.append("<x_version>3.1</x_version>");// set to required in the
        // specs

        // if dev
        if (props.getProperties2().equals(String.valueOf(PaymentConstants.TEST_ENVIRONMENT))) {
            sx.append("<x_test_request>TRUE</x_test_request>"); // for
            // testing
        }

        sx.append("<x_method>CC</x_method>");// required, CC or ECHECK
        sx.append("<x_type>CAPTURE_ONLY</x_type>");

        // need ccard number
        sx.append("<x_card_num>").append(pe.getCardnumber()).append("</x_card_num>");// at least 4 last card digit
        sx.append("<x_exp_date>").append(pe.getExpiration()).append("</x_exp_date>");
        sx.append("<x_amount>").append(pe.getTransactionAmount()).append("</x_amount>");
        if (pe.getCvv() != null) {
            sx.append("<x_card_code>").append(pe.getCvv()).append("</x_card_code>");
        }

        sx.append("<x_delim_data>TRUE</x_delim_data>");
        sx.append("<x_delim_char>|</x_delim_char>");
        sx.append("<x_relay_response>FALSE</x_relay_response>");
        sx.append("<x_auth_code>").append(trx.getInternalGatewayOrderId()).append("</x_auth_code>");
        sx.append("</transaction>");

        // x_encap_char
        // use cvv x_card_code
        // x_amount
        // x_recurring_billing NO
        // x_customer_ip

        HttpClient client = new HttpClient();

        httppost = new PostMethod(protocol + "://" + host + ":" + port + url);
        RequestEntity entity = new StringRequestEntity(sb.toString(), "text/plain", "UTF-8");
        httppost.setRequestEntity(entity);

        // open secure connection
        // URL anurl = new URL(protocol + "://" + host + ":" + port + url);

        /*
         * NOTE: If you want to use SSL-specific features,change to:
         * HttpsURLConnection connection = (HttpsURLConnection)
         * url.openConnection();
         */

        String stringresult = null;

        int result = client.executeMethod(httppost);
        if (result != 200) {
            log.error("Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);

            throw new Exception(
                    "Communication Error with Authorizenet " + protocol + "://" + host + ":" + port + url);
        }

        // stringresult = httppost.getResponseBodyAsString();
        // log.debug("AuthorizeNet response " +stringresult);

        stringresult = httppost.getResponseBodyAsString();
        log.debug("AuthorizeNet response " + stringresult);

        StringBuffer appendresult = new StringBuffer().append(order.getTotal()).append("|")
                .append(stringresult);

        // Format to xml
        //
        String finalresult = this.readresponse("|", appendresult.toString());

        pe = new AuthorizeNetParsedElements();
        digester = new Digester();
        digester.push(pe);

        digester.addCallMethod("transaction/transactionid", "setTransactionId", 0);
        digester.addCallMethod("transaction/approvalcode", "setApprovalCode", 0);
        digester.addCallMethod("transaction/responsecode", "setResponseCode", 0);
        digester.addCallMethod("transaction/amount", "setTransactionAmount", 0);
        digester.addCallMethod("transaction/reasontext", "setReasontext", 0);
        digester.addCallMethod("transaction/reasoncode", "setReasonCode", 0);

        reader = new StringReader(finalresult);

        digester.parse(reader);

        pe.setTransactionId(trx.getTransactionDetails().getMerchantPaymentGwOrderid());// BECAUSE NOT RETURNED FROM
        // AUTHORIZE NET !!!!

        return this.parseResponse(PaymentConstants.CAPTURE, sx.toString(), finalresult, pe, order,
                order.getTotal());

    } catch (Exception e) {
        if (e instanceof TransactionException) {
            throw (TransactionException) e;
        }
        log.error(e);

        TransactionException te = new TransactionException("AuthorizeNet Gateway error ", e);
        throw te;
    } finally {
        if (httppost != null) {
            httppost.releaseConnection();
        }
    }

}