එක දිගටම ජාවා සම්බන්ද මූලධර්ම සාකච්ඡා කරපු නිසා අපි මේ පාඩමෙන් ප්රායෝගික පැත්තට බර කරුණු ටිකක් අධ්යයනය කරමු. මේ වන විට පරිගණක වැඩසටහනක් යනු හුදෙක්ම එක් පරිගණකයකට සීමාවූ දෙයක් නොවන බව අපි කවුරුත් දන්න දෙයක්නේ. බොහොමයක් පරිගණක වැඩසටහන් අන්තර්ජාලයට සම්බන්දව පවතිනවා. උදාහරණ විදියට internet messenger වැඩසටහන් , virus guards, වැනි වැඩසටහන් දක්වන්න පුලුවන්. වයිරස් ගාඩ් එකක් සැලකුවොත් එය අන්තර්ජාලය හා සම්බන්ද වන අවස්ථා තමයි අලුත් virus definition තිබේ දැයි පරීක්ෂා කිරීම, අලුත් virus definition තිබේනම් ඒවා ලබා ගැනීම, සැක සහිත ගොණුවක් අදාල ආයතනයට upload කිරීම වැනි අවස්ථා. මෙහිදී මූලිකවම සිදුවන්නේ දුරස්ථ සර්වරයක ඇති වැඩසටහනක් හා කිසියම් සන්නිවේදනයක් කිරීමයි.
අපි මෙම පාඩමෙන් අධ්යයනය කිරීමට යන්නේ ජාවා වැඩසටහනකින් දුරස්ථ වැඩසටහනක් සමග සම්බන්ද වන ආකාරයයි. මාතෘකාවට අනුව අපි දුරස්ථ වැඩසටහන ලෙස යොදාගන්නේ PHP script එකක්. නමුත් මෙම දුරස්ථ වැඩසටහන Python හෝ Perl script එකක් හෝ වෙනත් ඕනෑම server side script එකක් වීමට පුලුවන්.
කොහොමද දුරස්ථ වැඩසටහනට දත්ත යවන්නේ?
මේ සඳහා අපි යොදාගන්නේ POST method එකයි. HTTP (Hypertext Transfer Protocol) එකට අනුව දත්ත හුවමාරු කිරීමේදී GET සහ POST යනුවෙන් ක්රම දෙකක් පවතිනවා. ඉන් GET ක්රමයට අනුව දත්ත හුවමාරු කිරීමේදී අදාල දත්ත URL එකට අමුණා යැවීම සිදුවනවා එනම් මෙම දත්ත පිටතට දෘෂ්යමාන වනවා එම නිසා password සම්බන්ද දත්ත මෙම ක්රමයට හුවමාරු කරන්නේ නැහැ. අනික වරකට යැවිය හැකි දත්ත ප්රමාණයේ සීමාවක්ද පවතිනවා.
GET Request එකකට උදාහරණයක්
http://mydomain.org/process.php?name=Kanishka&passw=hellox
POST method එකේදී HTTP request එකේ header එක තුල අදාල දත්ත ඇතුලත්කොට යැවීම සිදුකරනවා. මෙම වැඩසටහනේදී අපි යොදාගන්නේ POST method එකයි. මෙම methods ගැන වැඩිදුර තොරතුරු දැනගැනීම සඳහා මෙතනින් පිවිසෙන්න.
අපිට මේ සඳහා මීට පෙර ඉගෙනගත් streams සම්බන්ද දැනුම වැදගත් වනවා. මෙම වැඩ සටහනෙන් සිදුකරනුයේ දෙන ලද නගරයකට අදාල area code එක ලබාදීමයි. මෙම PHP script එක පහත දැක්වෙනවා.
අපිට මේ සඳහා මීට පෙර ඉගෙනගත් streams සම්බන්ද දැනුම වැදගත් වනවා. මෙම වැඩ සටහනෙන් සිදුකරනුයේ දෙන ලද නගරයකට අදාල area code එක ලබාදීමයි. මෙම PHP script එක පහත දැක්වෙනවා.
telCodes.php
<?php /** *Script : telCodes.php *Author : Kanishka Dilshan *Purpose : Processing a remote request *Blog : http://javaxclass.blogspot.com */ $code=$_POST['code']; $file=fopen("codes.txt","r") or exit("Data file is missing!"); $status=FALSE; while(!feof($file)){ $str=fgets($file); if(strpos($str,$code)!==FALSE){ echo $str; $status=TRUE; break; } } if($status===FALSE){ echo "code is not found!"; } fclose($file); ?>
මෙම වැඩසටහනේ 09 වන පේලියේදී POST request එක මගින් එවන ලද අදාල දත්තය ලබාගන්නවා එය code නම් parameter එක සමග සම්බන්දව පවතිනවා. ඉන්පසු data file එක විවෘත්ත කර එවන ලද code එක එතුල තිබේදැයි පේලියෙන් පේලිය කියවා පිරික්සා බලනවා. එය හමුවූ විට echo විධානය භාවිතාකර අදාල response එක ලබාදෙනවා.
දැන් අපි බලමු මෙම PHP Script එකට දත්ත යවා එහි response එක ලබාගැනීමට ලිවිය හැකි ජාවා වැඩසටහන. මෙම ක්රියාවලිය සිදුකරගැනීමට අපි මෙහිදී යොදාගන්නේ net පැකේජය තුල ඇතුලත් URL සහ URLConnection නම් classes දෙකයි. URLConnection එක streams කිහිපයකට සම්බන්ද කරගෙන අදාල ක්රියාවලිය සිදුකරගැනීම මෙහිදී මූලික වශයෙන් සිදුවනවා. මෙම ක්රියාවලිය Sockets යොදාගෙනද සිදු කිරීම කල හැකියි. අපි ඉදිරි පාඩම් පෙළකින් Sockets පිලිබඳ සාකච්ඡා කරමු.
Java_POST_Req.java
/** *class : Java_POST_Req *Author : Kanishka Dilshan *Purpose: Making a post request to a php script and retrieve the response *Blog : http://javaxclass.blogspot.com */ import java.net.*; import java.util.Scanner; import java.io.*; class Java_POST_Req{ public static void main(String args[]){ Scanner sc=new Scanner(System.in); System.out.print("Enter the area code or area : "); String value=sc.nextLine(); OutputStreamWriter outWrtr=null; BufferedReader buffRdr=null; try{ String httpdata=URLEncoder.encode("code","UTF-8")+"="+URLEncoder.encode(value,"UTF-8"); URL remoteResource=new URL("http://kanishka.hostei.com/telcodes/telCodes.php"); URLConnection conn=remoteResource.openConnection(); conn.setConnectTimeout(30*1000); conn.setDoOutput(true); outWrtr=new OutputStreamWriter(conn.getOutputStream()); outWrtr.write(httpdata); outWrtr.flush(); //read the response buffRdr=new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while((line=buffRdr.readLine())!= null){ System.out.println(line); } }catch(Exception e){ System.err.println("Error : "+e.getMessage()); } finally{ try{ outWrtr.close(); buffRdr.close(); }catch(Exception e){} } } }
output :
මේ සඳහා ලියන ලද පහත දැක්වෙන applet එක භාවිතා කර මෙහි සිදුවන ක්රියාවලිය පිරික්සා බලන්න.
සියලුම කේත පාඩම අවසානයේ අමුණා ඇත.
අපි දැන් මෙම ජාවා වැඩසටහන පේළිය විස්තර කරගනිමු.
Line14 - Line 16 :
මෙහිදී Scanner object එකක් සාදාගෙන console එකෙන් user input එකක් ලබාගැනීම සිදුවනවා.
Line21:
මෙහිදී PHP වැඩසටහනට යැවීමට අවශ්ය data සූදානම් කිරීම සිදුකෙරෙනවා. encode("code","UTF-8") මගින් parameter එකද URLEncoder.encode(value,"UTF-8") මගින් අදාල velue එකද UTF-8 ක්රමයට එනම් unicode ක්රමයට encode කිරීම සිදුකෙරෙනවා.
Line22:
PHP script එකට අදාල URL object එකක් සෑදීම මෙහිදී සිදුකෙරෙනවා.
Line23:
අදාල PHP script එක සමග සම්බන්දතාවය නිරූපණය වන URLConnection object එකක් මෙහිදී සකසාගැනීම සිදුකෙරෙනවා.
Line24:
connection timeout එක සඳහන් කිරීමෙන් සිදුකර ඇත්තේ අදාල PHP වැඩසටහන සමග connection එකක් ස්ථාපනය කරගැනීමට උපරිම වශයෙන් තත්පර 30ක කාලයක් ලබාදීමයි.
Line25:
මෙමගින් URLConnection ඔබ්ජෙක්ට් එක මගින් ඒසමග සම්බන්දවී ඇති PHP වැඩසටහනට දත්ත ලිවීම සිදුකරන බව ඇඟවීම සිදුකරනවා.
Line26-Line27:
මෙහිදී නව OutputStreamWriter object එකක් සකසාගෙන එයට අදාල URLConnection එකෙහි output stream එක සම්බන්ද කරගෙන සකස් කරගත් HTTP data එම URLConnection එකෙහි output stream එකට ලියනු ලබනවා. එනම් අදාල PHP script එක වෙත යවනු ලබනවා.
Line31-Line34:
PHP වැඩසටහන අප යවන HTTP request එක process කිරීමෙන් අනතුරුව ලබාදෙන response එක කියවීම මෙහිදී සිදුවනවා. මෙහිදී සකසාගෙන ඇති BufferedReader object එක සම්බන්ද වී ඇත්තේ URLConnection එකෙහි input stream එකටයි. එනම් PHP වැඩසටහන මගින් ලබාදෙන output එකටයි.
Line36-Line42:
මේ පිලිබඳව අපි Streams සම්බන්ද පාඩම් වලදී විස්තරාත්මකව අධ්යයනය කර තිබෙන නිසා මෙහිදී එය නැවත විස්තර කිරීම අනවශ්යවේ.
ඉහත දක්වා ඇති source code සහ applet එකට අදාල මූලාශ්ර කේත ලබා ගැනීමට පහත දක්වා ඇති link එක භාවිතාකරන්න.
Patta
ReplyDeletejava+php .....niyamai machan,,aluth aluth eaawa daamu,,,,,elazzz
ReplyDeleteYour blog is really helpful. Thanks.
ReplyDeletehttp://thariya.blogspot.com/2011/01/first-lab-of-software-technology-ii.html
elazzz
ReplyDeleteප්රයෝජනවත්
ReplyDeleteජයවේවා...........
niyamai ayye.godak hondata liyala tiyenawa.me wede digatama karagena yanna shakthiya dhayyraya lebewa.theruwan saranai
ReplyDeleteniyamai aiye hodata karan yanna...JAVA thawa igena gena apitath kiyala denna..thank u so...much
ReplyDeleteNice lesson aiyaa... We expect the next lesson asap....
ReplyDeleteWish you good luck...
pattai machan wade..digatama karagena palayan...Good Luck..
ReplyDeletephp script ekakin java application ekak palanaya karanne kohomada.. me widihata....
ReplyDeletepleace post how to connect java web application and java dektop application......
ReplyDelete@MADU
ReplyDeletephp script එකකින් ජාවා වැඩසටහනක් පාලනය කිරීමේදී කල හැකි එක් විකල්පයක් තමයි වරින් වර පාලනය කිරීමට අදාල විධානයන් echo කල හැකි php script එකක් ජාවා වැඩසටහනක් මහින් කියවීමට සැලැස්වීම උදා : තත් 5 කට වරක්
එවිට එම විධානයට අදාලව ජාවා වැඩසටහනේ අදාල කාර්යයන් සිදුකල හැකිය.
@Anonymous May 17, 2011 5:04 PM
ReplyDeleteසම්බන්ද කරවීමට අදාල කොටස සඳහා Socket යොදාගත හැකිය. නැතහොත් මෙම වැඩසටහනේ පරිදි URLConnection එකක් යොදාගත හැකිය.
Socket සහ URLConnection ක්රම දෙකෙන් වඩාත්ම සාර්ථක ක්රමය මොකක්ද කියල කියන්න පුලුවන්ද? වටිනා ලිපියක්! ස්තූතියි!
ReplyDelete@ගිහාන්
ReplyDeleteSocket සහ URLConnection දෙකම අවස්ථානුකූලව යොදාගන්න ඕන. එකක් විතරක් සාර්ථකයි කියල කියන්න බෑ.
උදා :
* HTTP protocol එකේ වැඩ කරනකොට URLConnection එක Socket වලට වඩා ඉතාම පහසුයි.
* HTTP නොවන වෙනත් අවස්ථා එනම් යම් network එකක අපි විසින් සාදාගත් ප්රෝටොකෝල් එකක් සඳහා සඳහා Socket යොදාගැනීමට පුලුවන් එහි නම්යශීලී බව නිසා.
mama aluth, mewa elama java rahas thamai, blog akaknam maru digatama karagena yanna, ela.....
ReplyDelete