24 Mart 2020 Salı

Java HttpClient kullanarak E-Devlet SGK Belge Doğrulama PDF'ine erişmek

Merhaba,

Web servis olarak bulunmayan bu servisi Http GET ve POST metodlarıyla elde etmeye çalıştığım kod parçası. Parametre olarak Barkod numarası ve TC kimlik gerekmektedir. Kütüphane olarak apache HttpClient kullandım, html içindeki gömülü token'ı alabilmek için de Jsoup'tan yararlandım.

try {
CookieStore cookieStore = new BasicCookieStore();
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
HttpClient httpClient = httpClientBuilder.setDefaultCookieStore(cookieStore).setConnectionTimeToLive(1, TimeUnit.MINUTES).setMaxConnPerRoute(100000).setRedirectStrategy(new LaxRedirectStrategy()).build();
HttpGet firstReq = new HttpGet("https://www.turkiye.gov.tr/belge-dogrulama");

HttpResponse firstResp = httpClient.execute(firstReq);

HttpEntity entity = firstResp.getEntity();
String firstStr = EntityUtils.toString(entity);
String token = Jsoup.parse(firstStr).select("input[name=token]").val();
System.out.println(token);

HttpPost secondResp = new HttpPost("https://www.turkiye.gov.tr/belge-dogrulama?submit");
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("sorgulananBarkod", "***BARKOD NO GELECEK***"));
urlParameters.add(new BasicNameValuePair("token", token));
urlParameters.add(new BasicNameValuePair("btn", "Devam Et"));
secondResp.setEntity(new UrlEncodedFormEntity(urlParameters, "UTF-8"));

HttpResponse response2 = httpClient.execute(secondResp);

HttpPost thirdResp = new HttpPost("https://www.turkiye.gov.tr/sgk-tescil-ve-hizmet-dokumu-belge-dogrulama?islem=dogrulama&submit");
urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("ikinciAlan", "***TC KIMLIK NO GELECEK***"));
urlParameters.add(new BasicNameValuePair("token", token));
urlParameters.add(new BasicNameValuePair("btn", "Devam Et"));
thirdResp.setEntity(new UrlEncodedFormEntity(urlParameters, "UTF-8"));

HttpResponse response3 = httpClient.execute(thirdResp);

HttpPost fourthResp = new HttpPost("https://www.turkiye.gov.tr/sgk-tescil-ve-hizmet-dokumu-belge-dogrulama?islem=onay&submit");
urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("chkOnay", "1"));
urlParameters.add(new BasicNameValuePair("token", token));
urlParameters.add(new BasicNameValuePair("btn", "Devam Et"));
fourthResp.setEntity(new UrlEncodedFormEntity(urlParameters, "UTF-8"));

HttpResponse response4 = httpClient.execute(fourthResp);

HttpGet pdfGet = new HttpGet("https://www.turkiye.gov.tr/sgk-tescil-ve-hizmet-dokumu-belge-dogrulama?belge=goster&goster=1");
HttpResponse pdfResp = httpClient.execute(pdfGet);
HttpEntity pdfEntity = pdfResp.getEntity();

InputStream is = pdfEntity.getContent();
String filePath = "y1.pdf";
FileOutputStream fos = new FileOutputStream(new File(filePath));
int inByte;
while ((inByte = is.read()) != -1)
fos.write(inByte);
is.close();
fos.close();

}
catch (Exception e) {
e.printStackTrace();
}

21 Aralık 2014 Pazar

Google App Engine'de PrimeFaces / JSF çalıştırmak

Merhabalar,

DevFest'te Çağatay Çivici'yi dinledikten sonra bir gaza gelip biraz uğraşmak istedim. Yaptıklarımın da sadece kendi bilgisayarımda çalışmasın diye düşündüm ve daldım Google App Engine'e :)

NetBeans, hem Google App Engine hem PrimeFaces kullanmak için ciddi bir kolaylık sağlıyor. (Bu da DevFest'in etkisi olsa gerek üzerimde) Neyse böyle şeylere başlarken en fazla zorluk çekilen nokta konfigürasyonu sağlamak, ki benim de öyle oldu. Sonunda çalıştırmayı başardım, ve bunu da paylaşmak istedim.