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
我也測試過一個服務器,它部署在不同的IP(機器),保存在公共領域。我應該如何繼續我需要使用模擬器測試客戶端服務器通信? – chiranjib
確保MDS模擬器正在啓動。然後,您可以使用服務器上的網絡接口卡的IP地址或主機名(您的DNS服務器將查找)。這可以是模擬器運行的機器,也可以是不同的機器。您不能使用127.0.0.1或本地主機。 – Richard