Skip to content

Instantly share code, notes, and snippets.

@elraro
Last active September 6, 2016 20:47
Show Gist options
  • Save elraro/020b220d21761051b05f1044d4fea690 to your computer and use it in GitHub Desktop.
Save elraro/020b220d21761051b05f1044d4fea690 to your computer and use it in GitHub Desktop.
package com.velentis.crtm.nfc.ws;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Looper;
import android.os.NetworkOnMainThreadException;
import android.util.Base64;
import android.util.Log;
import com.velentis.crtm.nfc.model.SS_prepagoConsultaSaldo;
import com.velentis.crtm.nfc.utils.LocaleUtils;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Date;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EntityUtils;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
public class WebServices
{
public static String key = null;
private static Date lastKey;
public static String privateKey = "pruebapruebapruebapruebaprueba12";
public static String server = "http://www.citram.es:8080/WSMultimodalInformation/MultimodalInformation.svc?wsdl";
static final String serverV2_viejo = "http://sbit1.crtm.es:50080/spai-crtm/srv/prepago/venta/";
static final String serverV2pre = "http://www.citram.es:50081/VENTAPREPAGOTITULO/VentaPrepagoTitulo.svc?wsdl";
public static final String server_dev = "http://www.citram.es:8080/WSMultimodalInformation_DEV/MultimodalInformation.svc?wsdl";
public static final String server_pre = "http://www.citram.es:8080/WSMultimodalInformation_TEST/MultimodalInformation.svc?wsdl";
public static final String server_pro = "http://www.citram.es:8080/WSMultimodalInformation/MultimodalInformation.svc?wsdl";
public static void DownloadFromUrl(String paramString1, String paramString2)
{
for (;;)
{
try
{
Object localObject = new java/net/URL;
((URL)localObject).<init>(paramString1);
paramString1 = new java/io/File;
paramString1.<init>(paramString2);
long l = System.currentTimeMillis();
Log.d("ImageManager", "download begining");
StringBuilder localStringBuilder = new java/lang/StringBuilder;
localStringBuilder.<init>("download url:");
Log.d("ImageManager", localObject);
localStringBuilder = new java/lang/StringBuilder;
localStringBuilder.<init>("downloaded file name:");
Log.d("ImageManager", paramString2);
paramString2 = ((URL)localObject).openConnection().getInputStream();
localObject = new java/io/BufferedInputStream;
((BufferedInputStream)localObject).<init>(paramString2);
paramString2 = new org/apache/http/util/ByteArrayBuffer;
paramString2.<init>(50);
i = ((BufferedInputStream)localObject).read();
if (i == -1)
{
localObject = new java/io/FileOutputStream;
((FileOutputStream)localObject).<init>(paramString1);
((FileOutputStream)localObject).write(paramString2.toByteArray());
((FileOutputStream)localObject).close();
paramString1 = new java/lang/StringBuilder;
paramString1.<init>("download ready in");
Log.d("ImageManager", (System.currentTimeMillis() - l) / 1000L + " sec");
return;
}
}
catch (IOException paramString1)
{
int i;
Log.d("ImageManager", "Error: " + paramString1);
continue;
}
paramString2.append((byte)i);
}
}
public static byte[] EncryptStringToBytes(String paramString1, String paramString2, byte[] paramArrayOfByte)
{
try
{
Cipher localCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Object localObject = paramString2.getBytes("US-ASCII");
paramString2 = new javax/crypto/spec/SecretKeySpec;
paramString2.<init>((byte[])localObject, "AES");
localObject = new javax/crypto/spec/IvParameterSpec;
((IvParameterSpec)localObject).<init>(paramArrayOfByte);
localCipher.init(1, paramString2, (AlgorithmParameterSpec)localObject);
paramString1 = Base64.encode(localCipher.doFinal(paramString1.getBytes("US-ASCII")), 0);
return paramString1;
}
catch (Exception paramString1)
{
for (;;)
{
paramString1 = null;
}
}
}
public static String getAuthentication()
{
Object localObject2 = null;
if ((lastKey != null) && (new Date().getTime() - lastKey.getTime() > 54000L)) {
key = null;
}
if (key == null)
{
localObject1 = getPublicKey();
if (localObject1 != null)
{
lastKey = new Date();
key = ((PublicKeyResponse)localObject1).getKey();
}
}
Object localObject1 = localObject2;
if (key != null)
{
byte[] arrayOfByte = EncryptStringToBytes(key, privateKey, new byte[16]);
localObject1 = localObject2;
if (arrayOfByte != null)
{
localObject1 = new String(arrayOfByte);
localObject1 = "<geis:authentication><geis:connectionKey>" + (String)localObject1 + "</geis:connectionKey>" + "</geis:authentication>";
}
}
return (String)localObject1;
}
public static OfficesResponse getOffices(int paramInt)
{
localObject3 = null;
Object localObject1 = "";
if (paramInt == 0) {
localObject1 = "OFICINA";
}
for (;;)
{
try
{
Object localObject4 = new java/lang/StringBuilder;
((StringBuilder)localObject4).<init>("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:geis=\"GEIS.MultimodalInfoWebService\"><soapenv:Header/><soapenv:Body><geis:OfficeRequest>");
localObject1 = getAuthentication() + "<geis:type>" + (String)localObject1 + "</geis:type>" + "</geis:OfficeRequest>" + "</soapenv:Body>" + "</soapenv:Envelope>";
localObject4 = sendRequest(server, (String)localObject1, "GEIS.MultimodalInfoWebService/MultimodalInformation/GetOffices");
localObject1 = localObject3;
if (((HttpResponse)localObject4).getStatusLine().getStatusCode() == 200)
{
localObject4 = ((HttpResponse)localObject4).getEntity();
SAXParser localSAXParser = SAXParserFactory.newInstance().newSAXParser();
localObject1 = new com/velentis/crtm/nfc/ws/OfficesHandler;
((OfficesHandler)localObject1).<init>();
localSAXParser.parse(((HttpEntity)localObject4).getContent(), (DefaultHandler)localObject1);
localObject1 = ((OfficesHandler)localObject1).getResponse();
}
}
catch (Exception localException)
{
localException.printStackTrace();
Object localObject2 = localObject3;
continue;
}
return (OfficesResponse)localObject1;
if (paramInt == 1) {
localObject1 = "RECARGA";
}
}
}
public static PublicKeyResponse getPublicKey()
{
localObject3 = null;
try
{
Object localObject4 = sendRequest(server, "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:geis=\"GEIS.MultimodalInfoWebService\"><soapenv:Header/><soapenv:Body><geis:PublicKeyRequest/></soapenv:Body></soapenv:Envelope>", "GEIS.MultimodalInfoWebService/MultimodalInformation/GetPublicKey");
localObject1 = localObject3;
if (((HttpResponse)localObject4).getStatusLine().getStatusCode() == 200)
{
HttpEntity localHttpEntity = ((HttpResponse)localObject4).getEntity();
localObject1 = SAXParserFactory.newInstance().newSAXParser();
localObject4 = new com/velentis/crtm/nfc/ws/PublicKeyHandler;
((PublicKeyHandler)localObject4).<init>();
((SAXParser)localObject1).parse(localHttpEntity.getContent(), (DefaultHandler)localObject4);
localObject1 = ((PublicKeyHandler)localObject4).getResponse();
}
}
catch (Exception localException)
{
for (;;)
{
Object localObject1;
localException.printStackTrace();
Object localObject2 = localObject3;
}
}
return (PublicKeyResponse)localObject1;
}
public static SS_prepagoConsultaSaldo getSaldoPrepago(String paramString, Context paramContext)
{
try
{
Object localObject = new java/lang/StringBuilder;
((StringBuilder)localObject).<init>("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"> <soapenv:Header/> <soapenv:Body> <tem:ConsultaSaldoTarjeta1> <tem:sNumeroTP>");
paramString = sendRequest("http://www.citram.es:50081/VENTAPREPAGOTITULO/VentaPrepagoTitulo.svc?wsdl", paramString + "</tem:sNumeroTP>" + " <tem:sLenguaje>" + LocaleUtils.getLocale(paramContext) + "</tem:sLenguaje>" + " <tem:sTipoApp>APP_SALDO_ANDROID</tem:sTipoApp>" + " </tem:ConsultaSaldoTarjeta1>" + " </soapenv:Body>" + "</soapenv:Envelope>", "http://tempuri.org/IVentaPrepagoTitulo/ConsultaSaldoTarjeta1");
if (paramString.getStatusLine().getStatusCode() == 200)
{
localObject = paramString.getEntity();
paramContext = SAXParserFactory.newInstance().newSAXParser();
paramString = new com/velentis/crtm/nfc/ws/ConsultaSaldoNewHandler;
paramString.<init>();
localObject = EntityUtils.toString((HttpEntity)localObject).replace("&lt;", "<").replace("&gt;", ">");
((String)localObject).length();
localObject = ((String)localObject).substring(((String)localObject).indexOf("<a:sResulXMLField>") + "<a:sResulXMLField>".length(), ((String)localObject).indexOf("</a:sResulXMLField>"));
InputSource localInputSource = new org/xml/sax/InputSource;
ByteArrayInputStream localByteArrayInputStream = new java/io/ByteArrayInputStream;
localByteArrayInputStream.<init>(((String)localObject).getBytes("utf-8"));
localInputSource.<init>(localByteArrayInputStream);
paramContext.parse(localInputSource, paramString);
}
for (paramString = paramString.getResponse();; paramString = null) {
return paramString;
}
}
catch (Exception paramString)
{
for (;;)
{
paramString.printStackTrace();
paramString = null;
}
}
}
public static HttpResponse sendRequest(String paramString1, String paramString2, String paramString3)
throws IOException, NetworkOnMainThreadException
{
Object localObject = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout((HttpParams)localObject, 100000);
HttpConnectionParams.setSoTimeout((HttpParams)localObject, 100000);
localObject = new DefaultHttpClient((HttpParams)localObject);
paramString1 = new HttpPost(paramString1);
try
{
StringEntity localStringEntity = new org/apache/http/entity/StringEntity;
localStringEntity.<init>(paramString2, "UTF-8");
paramString1.setEntity(localStringEntity);
paramString1.addHeader("Content-type", "text/xml; charset=utf-8");
if ((paramString3 != null) && (!paramString3.equalsIgnoreCase(""))) {
paramString1.addHeader("SOAPAction", paramString3);
}
return ((DefaultHttpClient)localObject).execute(paramString1);
}
catch (UnsupportedEncodingException paramString2)
{
for (;;)
{
paramString2.printStackTrace();
}
}
}
private static void showDialog(Context paramContext, String paramString)
{
Looper.prepare();
paramContext = new AlertDialog.Builder(paramContext);
paramContext.setMessage(paramString).setPositiveButton("cerrar", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) {}
});
paramContext.create().show();
Looper.loop();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment