We can use HttpConnection class to make requests.
Lets see what are the basic steps.
Java(midp) Code :
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hello; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; /** * * @author Kanishka * References : * http://www.java2s.com/Code/Java/J2ME/SampletodemonstrateHttpGETandPOSTfromMIDlet.htm * http://codetrips.blogspot.com/2007/04/http-post-from-j2me-midlet.html */ public class HttpCommunication { public String doPostRequest(String city,String code){ StringBuffer result=new StringBuffer(""); HttpConnection httpCon=null; //String url="http://kdkanishka.alwaysdata.net/midp/midpreq.php"; String url="http://localhost/midp/midpreq.php"; InputStream ins=null; OutputStream ous=null; try{ //create http connection object to make requests httpCon=(HttpConnection) Connector.open(url,Connector.READ_WRITE); httpCon.setRequestMethod(HttpConnection.POST); httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); httpCon.setRequestProperty("User-Agent", "HttpMidlet/0.2"); httpCon.setRequestProperty("My-Custom-Property", "Requets from Kanishka"); //defining POST data String postdata="city="+city+"&code="+code; System.out.println(postdata); //set content length //important : Without a content length a JSP will not process POST data httpCon.setRequestProperty("Content-length",String.valueOf(postdata.getBytes().length)); //after this step any call to setResuestProperty method will raise IOException //now we have to write data to the server ous=httpCon.openOutputStream(); ous.write(postdata.getBytes()); ous.flush(); ous.close(); int response_code=httpCon.getResponseCode(); if(response_code==HttpConnection.HTTP_OK){ //if server has a response int responseLen=(int) httpCon.getLength(); System.out.println(responseLen); ins=httpCon.openInputStream(); if(ins==null){ result.append("Cannot open server response!"); } // if(responseLen>0){ // int chr; // while((chr=ins.read())!=-1){ // result.append((char)chr); // } // } byte[] respData=new byte[responseLen]; ins.read(respData); String tmp=new String(respData); result.append(tmp); } }catch(IOException e){ result.append("Network Problem : " + e.getMessage()); }finally{ if(ins!=null){ try { ins.close(); } catch (IOException ex) { ex.printStackTrace(); } } if(ous!=null){ try { ous.close(); } catch (IOException ex) { ex.printStackTrace(); } } System.out.println("Connection closed!"); } return result.toString(); } }PHP Code :
<?php //data manipulation part $areacodes=array(); $areacodes['63']="Ampara"; $areacodes['25']="Anuradhapura"; $areacodes['55']="Badulla"; $areacodes['65']="Batticaloa"; $areacodes['91']="Galle"; $areacodes['33']="Gampaha"; $areacodes['21']="Jaffna"; $areacodes['67']="Kalmunai"; $areacodes['81']="Kandy"; $areacodes['11']="Kelaniya"; $areacodes['37']="Kurunegalla"; $areacodes['11']="Maharagama"; $areacodes['23']="Mannar"; $areacodes['41']="Matara"; $areacodes['11']="Moratuwa"; $areacodes['11']="Colombo"; $areacodes['31']="Negombo"; $areacodes['52']="Nuwara Eliya"; $areacodes['27']="Polonnaruwa"; $areacodes['32']="Puttalama"; $areacodes['55']="Rantembe"; $areacodes['45']="Ratnapura"; $areacodes['26']="Trincomalee"; $areacodes['24']="Vavuniya"; //communication part $code=$_POST['code']; $city=$_POST['city']; if(strlen($code)>0){ //user provided code $city=findArea($areacodes,$code); echo $city; }else if(strlen($city)>0){ //user provided city $code=findCode($areacodes,$city); echo $code; } function findArea($array,$code){ foreach ($array as $id=>$value){ if(strcmp($code,$id)==0){ return $value; } } } function findCode($array,$area){ foreach($array as $id=>$value){ if(strcmp($area,$value)==0){ return $id; } } } ?>GUI (Coded based on LWUIT)
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hello; import com.sun.lwuit.Button; import com.sun.lwuit.Command; import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.TextField; import com.sun.lwuit.events.ActionEvent; import com.sun.lwuit.events.ActionListener; import javax.microedition.midlet.*; /** * @author Kanishka */ public class AreaCodes extends MIDlet implements ActionListener{ TextField txtCity=null; TextField txtCode=null; TextField txtResult=null; Button btnSubmit=null; Command cmdExit=null; public void startApp() { Display.init(this); Form f=new Form("Area Codes Demo"); txtCity=new TextField(); txtCode=new TextField(); txtResult=new TextField(); btnSubmit=new Button("Submit!"); f.addComponent(new Label("Area Code :")); f.addComponent(txtCode); f.addComponent(new Label("City :")); f.addComponent(txtCity); f.addComponent(txtResult); f.addComponent(btnSubmit); cmdExit=new Command("Exit!"); f.addCommand(cmdExit); f.setCommandListener(this); btnSubmit.addActionListener(this); f.show(); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void actionPerformed(ActionEvent arg0) { if(arg0.getCommand()==cmdExit){ destroyApp(false); notifyDestroyed(); }else if(arg0.getSource()==btnSubmit){ String res=new HttpCommunication().doPostRequest(txtCity.getText(), txtCode.getText()); txtResult.setText(res); } } }
Hi there, awesome site. I thought the topics you posted on were very interesting. I tried to add your RSS to my feed reader and it a few. take a look at it,
ReplyDeletehopefully I can add you and follow.
J2ME Application Development