2011-08-23 98 views
0

我爲黑莓手機中的客戶端 - 服務器通信編寫了下面的代碼,但它不起作用。無法執行請求 - 響應

我通過POST發送數據。

在使用Blackberry模擬器進行測試時,我沒有收到來自服務器的任何響應。

使用Android & iPhone,我可以通過相同的請求參數從相同的服務器url &獲得響應。

private void communicate() { 

     HttpConnection hc = null; 
     DataInputStream dis = null; 
     DataOutputStream dos = null; 
     StringBuffer messagebuffer = new StringBuffer(); 
     try{ 
     String input="firstname="+ fName.getText().trim()+ 
     "&lastname=" + lName.getText().trim()+"&platform=blackberry"; 
     String url = "http://127.0.0.1:80/index/login"; 

     hc = (HttpConnection) 
     Connector.open(url, Connector.READ_WRITE); // Set the request method 
     hc.setRequestMethod(HttpConnection.POST); 
     hc.setRequestProperty("User-Agent", "BlackBerry"); 
     hc.setRequestProperty("Content-Type", 
     "application/x-www-form-urlencoded"); 
     hc.setRequestProperty("Content-Length", 
     Integer.toString(input.length())); 

     dos = hc.openDataOutputStream(); 
     dos.write(input.getBytes()); 
     dos.flush(); dos.close(); 
     // Retrieve the response back from the servlet 
     dis = new DataInputStream(hc.openInputStream()); 
     int ch; 
     // Check the Content-Length first 
     long len = hc.getLength(); 
     if(len!=-1) { 
     for(int i = 0;i<len;i++) 

     if((ch = dis.read())!= -1) 
     messagebuffer.append((char)ch); 
     } else { // if the content-length is not available 
     while ((ch = dis.read()) != -1) 
     messagebuffer.append((char) ch); 
     } 
     dis.close(); 
     }catch(Exception e){ 
     e.printStackTrace(); 
     } 
} 

請建議是否需要對代碼進行任何更改。

在此先感謝。

CB

回答

1

MDS服務器將不允許連接到127.0.0.1或本地主機。

+0

我也測試過一個服務器,它部署在不同的IP(機器),保存在公共領域。我應該如何繼續我需要使用模擬器測試客戶端服務器通信? – chiranjib

+1

確保MDS模擬器正在啓動。然後,您可以使用服務器上的網絡接口卡的IP地址或主機名(您的DNS服務器將查找)。這可以是模擬器運行的機器,也可以是不同的機器。您不能使用127.0.0.1或本地主機。 – Richard