tag:blogger.com,1999:blog-16371728599016997662023-06-20T05:34:09.804-07:00Kod Örneği -- aLiAlihttp://www.blogger.com/profile/10226352975665327690noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-1637172859901699766.post-70550866511127948042010-04-26T11:14:00.000-07:002010-04-28T07:11:46.107-07:00MSISDN Yönlendirme (MSISDN Forwarding) Java Kod ÖrneğiMSISDN nedir diye soruyorsanız, muhtemelen bu makale size uygun değil :). Yine de wikiye bir göz atın..<br /><a href="http://tr.wikipedia.org/wiki/MSISDN" target="_blank">http://tr.wikipedia.org/wiki/MSISDN</a><br /><br />Muhtemelen bir WAP uygulaması geliştiriyorsunuz ve operatörünüz (örnek: Turkcell) uygulamanıza msisdn yönlendirmesi (msisdn forwarding) yapıyor. Bu durumda MSISDN'i HTTP başlıklarından okumanız gerekmekte. Kullanacağınız başlık bir çerez (cookie) olarak yer alan <em>User-Identity-Forward-msisdn</em>.<br /><br />905301234567 için <em>User-Identity-Forward-msisdn</em> içeren örnek bir çerez:<br /><blockquote>Cookie: User-Identity-Forward-msisdn=393035333031323334353637;...</blockquote><br /><br />Buna göre Java için örnek servlet şu şekilde:<br /><br /><pre class="brush: java"><br />import java.io.IOException;<br /><br />import javax.servlet.ServletException;<br />import javax.servlet.http.Cookie;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />/**<br /> * @author aLi -- http://kodornegi.blogspot.com<br /> */<br />public class MsisdnOrnekServlet extends HttpServlet {<br /><br /> private static final long serialVersionUID = -6971624334249419092L;<br /><br /> private static String hex2ascii(String s) {<br /> StringBuilder ascii = new StringBuilder();<br /> for (int i = 0; i < s.length(); i+=2) {<br /> int c = Integer.parseInt(s.substring(i, Math.min(i+2, s.length())), 16);<br /> ascii.append(c == 0 ? '?' : (char) c);<br /> }<br /> return ascii.toString();<br /> }<br /><br /> private static String getMsisdnFromCookie(HttpServletRequest request, boolean msisdnHex) {<br /> String msisdn = null;<br /> Cookie[] cookies = request.getCookies();<br /> if (cookies != null) {<br /> for (int i = 0; i < cookies.length; i++) {<br /> if (cookies[i] != null) {<br /> if ("User-Identity-Forward-msisdn".equalsIgnoreCase(cookies[i].getName())) {<br /> msisdn = msisdnHex ? hex2ascii(cookies[i].getValue()) : cookies[i].getValue();<br /> break;<br /> }<br /> }<br /> }<br /> }<br /> return msisdn;<br /> }<br /> <br /> @Override<br /> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {<br /> String msisdn = getMsisdnFromCookie(request, true);<br /> }<br /> <br /> @Override<br /> protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {<br /> String msisdn = getMsisdnFromCookie(request, true);<br /> }<br />}<br /></pre><br /><br />Eğer MSISDN, onaltılı (hexadecimal) sayı düzeninde yönlendirilmiyorsa bu durumda, yukarıdaki kodda <em>doGet</em> ve <em>doPost</em> metodları içinde<br /><blockquote>String msisdn = getMsisdnFromCookie(request, <b>true</b>);</blockquote><br />satırlarını şu şekilde değiştirmeniz gerekiyor:<br /><blockquote>String msisdn = getMsisdnFromCookie(request, <b>false</b>);</blockquote><br /><br /><strong>SSL (HTTPS)</strong><br /><br />Eğer uygulamanız SSL (HTTPS üzerinde) çalışıyorsa bu durumda, operatörünüzün MSISDN yönlendirmesi çalışmayacaktır. Çünkü HTTP başlıklarına MSISDN'i ekleyecek olan WAP Gateway, bir HTTP proxy'dir ve istemci (kullanıcı) ile sunucu (uygulamanız) arasındaki iletişimi görüntüleyemez / değiştiremez. Ancak bu durumun çözümü de yok değil.<br /><br />1. Kullanıcı HTTP sayfanızı açmak için istek gönderir. (Eğer anasayfanız HTTPS ise HTTP bir sayfaya yönlendirmeyi düşünebilirsiniz. Aşağıda SecureServlet'te MSISDN olmadığı durumda NonSecureServlet'e çevrilmesi yöntemini de kullanabilirsiniz.)<br />2. Operatör tarafından uygulamanıza yönlendirilen MSISDN, HTTP session'a kaydedilir.<br />3. HTTP yönlendirme metodları kullanılarak, istek HTTPS sayfaya yönlendirilir.<br />4. HTTPS sayfada artık MSISDN, session içinde yer alır.<br /><br />İlk 3 adım için NonSecureServlet'i örnek olarak alabilirsiniz:<br /><br /><pre class="brush: java"><br />import java.io.IOException;<br /><br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />/**<br /> * @author aLi -- http://kodornegi.blogspot.com<br /> */<br />public class NonSecureServlet extends HttpServlet {<br /> <br /> public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {<br /> String msisdn = getMsisdnFromCookie(request, true);<br /> request.getSession().setAttribute("MSISDN", msisdn);<br /> response.sendRedirect("https://localhost/secure?redirected=1");<br /> }<br />}<br /></pre><br /><br /><br />MSISDN'i almak için <u>HTTPS üzerinde çalışan</u> SecureServlet:<br /><br /><pre class="brush: java"><br />import java.io.IOException;<br />import java.io.OutputStream;<br /><br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />/**<br /> * @author aLi -- http://kodornegi.blogspot.com<br /> */<br />public class SecureServlet extends HttpServlet {<br /> <br /> public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {<br /> String msisdn = (String) request.getSession().getAttribute("MSISDN");<br /> if (msisdn == null) {<br /> String redirected = request.getParameter("redirected");<br /> if ("1".equals(redirected)) {<br /> // Zaten NonSecureServlet'ten yönlendirilmiş. Msisdn yok..<br /> response.setContentType("text/plain");<br /> OutputStream os = response.getOutputStream();<br /> os.write(("msisdn yok").getBytes());<br /> os.close();<br /> } else {<br /> response.sendRedirect("http://localhost/nonsecure");<br /> }<br /> } else {<br /> response.setContentType("text/plain");<br /> OutputStream os = response.getOutputStream();<br /> os.write(("msisdn: " + msisdn).getBytes());<br /> os.close();<br /> }<br /> }<br />}<br /></pre>Alihttp://www.blogger.com/profile/10226352975665327690noreply@blogger.com1tag:blogger.com,1999:blog-1637172859901699766.post-53516810526671925242010-04-08T01:36:00.001-07:002010-04-28T07:17:55.092-07:00Eposta (Email) Adres Doğruluğu Kontrolü Java Kod ÖrneğiElektronik posta adreslerinin <em>regular expression</em> kullanılarak doğrulanmasını sağlayan Java kod örneği.. Bu kod, sadece sözdizimi (<em>syntax</em>) kontrolü yapmaktadır, dolayısıyla gerçekte böyle bir eposta adresi olup olmadığını göstermez.<br /><br /><pre class="brush: java"><br />import java.util.regex.Pattern;<br /><br />/**<br />* @author aLi -- http://kodornegi.blogspot.com<br />*/<br />public class PatternOrnek {<br /><br /> private static final Pattern epostaPattern = Pattern.compile("^\\w[\\w\\.-]*@([\\w\\-]+\\.)+[a-z]{2,6}$");<br /><br /> public static void main(String[] args) {<br /> String eposta = "abc@def.com";<br /> if (eposta == null || !epostaPattern.matcher(eposta).matches()) {<br /> System.out.println("Geçersiz eposta adresi!");<br /> } else {<br /> System.out.println("Geçerli eposta adresi.");<br /> }<br /> }<br />}<br /></pre>Alihttp://www.blogger.com/profile/10226352975665327690noreply@blogger.com0tag:blogger.com,1999:blog-1637172859901699766.post-62809487038889948762010-04-05T06:49:00.000-07:002010-04-28T07:18:21.678-07:00Mime Multipart içindeki dosyaların ayrıştırılması Java kod örneği<pre class="brush: java"><br />MimeBodyPart mbp = new MimeBodyPart(new FileInputStream("mime.txt"));<br />MimeMultipart mmp = (MimeMultipart) mbp.getContent();<br />for (int i = 0; i < mmp.getCount(); i++) {<br /> BodyPart parca = mmp.getBodyPart(i);<br /> System.out.println(i + " " + parca.getFileName() + " / " + parca.getContentType() + " / " + parca.getContent().getClass());<br /> // Dosyaların yazılacağı klasör..<br /> File klasor = new File("cikti");<br /> klasor.mkdirs();<br /> FileOutputStream fos = new FileOutputStream(new File(klasor, parca.getFileName()));<br /> if (parca.getContent() instanceof String) {<br /> fos.write(((String)parca.getContent()).getBytes());<br /> } else {<br /> InputStream is = (InputStream) parca.getContent();<br /> byte[] buf = new byte[1024];<br /> int len;<br /> while ((len = is.read(buf)) != -1) {<br /> fos.write(buf, 0, len);<br /> }<br /> is.close();<br /> }<br /> fos.close();<br />}<br /></pre>Alihttp://www.blogger.com/profile/10226352975665327690noreply@blogger.com1tag:blogger.com,1999:blog-1637172859901699766.post-91867602455425799022010-02-08T01:31:00.000-08:002010-04-28T07:18:54.941-07:00Turkcell HandleNfRequest Web Servisi C# kod örneğiAbonelere iletilen (MT) SMS mesajların gönderim durumlarının Turkcell tarafından üçüncü parti firmalara yönlendirildiği HandleNfRequest web servisinin C# kod örneği..<br /><br /><pre class="brush: csharp"><br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Web;<br />using System.Web.Services;<br />using System.Web.Services.Protocols;<br /><br />namespace WebService1<br />{<br /> [WebService(Namespace = "http://www.turkcell.com.tr/notfrouter/webservices/NfRequestHandler")]<br /> public class NfWebService : System.Web.Services.WebService, INfRequestHandlerPort<br /> {<br /><br /> [WebMethod]<br /> public NfResponse[] handleNfRequest(NfHeader NfHeader, Object[] NfRequestArray)<br /> {<br /> System.Diagnostics.Debug.WriteLine("NfHeader: " + NfHeader);<br /> System.Diagnostics.Debug.WriteLine("NfRequestArray: " + NfRequestArray);<br /> System.Diagnostics.Debug.WriteLine("NfRequestArray.Length: " + NfRequestArray.Length);<br /> NfResponse[] nfResponses = new NfResponse[NfRequestArray.Length];<br /> for (int i = 0; i < NfRequestArray.Length; i++) {<br /> NfRequest nfRequest = (NfRequest)NfRequestArray[i];<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"]: " + nfRequest);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].dscts: " + nfRequest.dscts);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].msgId: " + nfRequest.msgId);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].msisdn: " + nfRequest.msisdn);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].scts: " + nfRequest.scts);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].serviceId: " + nfRequest.serviceId);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].statusCode: " + nfRequest.statusCode);<br /> System.Diagnostics.Debug.WriteLine("nfRequest["+i+"].statusDesc: " + nfRequest.statusDesc);<br /> /* @TODO */<br /> /* DB ye kayıt, email atma vb. işlemler sonradan yapılmak üzere bir kuyruğa bu noktada atılabilir. */ <br /> NfResponse nfResponse = new NfResponse();<br /> nfResponse.statusCode = 0;<br /> nfResponse.errorCode = null;<br /> nfResponse.errorDescription = null;<br /> nfResponses[i] = nfResponse;<br /> }<br /> System.Diagnostics.Debug.WriteLine("nfResponses: " + nfResponses);<br /> System.Diagnostics.Debug.WriteLine("nfResponses.Length: " + nfResponses.Length);<br /> return nfResponses;<br /> }<br /> }<br />}<br /></pre><br />Microsoft Visual Web Developer 2008 üzerinde geliştirilmiş projenin bütün kaynak kodları için..<br /><a href="http://hotfile.com/dl/27679928/b1664db/WebService1.rar.html">http://hotfile.com/dl/27679928/b1664db/WebService1.rar.html</a>Alihttp://www.blogger.com/profile/10226352975665327690noreply@blogger.com0