2012-02-27 81 views
1

我在寫一個應用程序,我正在使用Http連接在服務器上發佈數據。當我在模擬器中檢查它時,我的應用程序工作正常。我的Web服務花費太多時間來生成響應,我的模擬器也以正確的方式響應。不知何故,當我在設備上安裝應用程序時,我的應用程序在服務器上發佈了兩次數據。我檢查了它...有沒有人有任何解決方案如何擺脫這?HTTP連接發佈數據兩次

在這裏,我附上了我的發送請求的代碼。我認爲移動應用程序在達到HTTP超時時發送另一個請求,但我不知道有什麼問題。請幫幫我。

String param= 
    "function=OpenRecharge&LoginId="+SharedVariable.getUserInfo().getLoginID() 
       +"&BatchId="+SharedVariable.getSelectedProduct().getBatchID() 
       +"&SystemServiceID="+SharedVariable.getSelectedProduct().getSystemServiceID() 
       +"&ReferalNumber="+strMobileNo 
       +"&Amount="+strAmount 
       +"&FromANI="+fromMoNo 
       +"&Email=" 
       +"&Checksum="+Checksum; 
System.out.println("Final Parameter:\n"+param); 

connection = (HttpConnection) Connector.open(url); 

//Connector.open(param, strAmount, quit) 
connection.setRequestMethod(HttpConnection.POST); 
connection.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0"); 
connection.setRequestProperty("Accept_Language","en-US"); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

OutputStream out = connection.openOutputStream(); 
out.write(param.getBytes()); 

out.flush(); 
//System.out.println("Status Line Code: " + connection.getResponseCode()); 
//System.out.println("Status Line Message: " + connection.getResponseMessage()); 

is=connection.openDataInputStream(); 
int chr; 
StringBuffer sb=new StringBuffer(); 
while ((chr = is.read()) != -1) 
    sb.append((char) chr); 

System.out.println("Response===>"+sb.toString()); 
+1

我強烈懷疑這是因爲您在onCreate和onResume中都有相同的代碼。 – kosa 2012-02-27 21:19:05

+0

沒有一個更全面的代碼引用我會同意thinksteep的評論儘可能原因 – Kerry 2012-02-27 22:33:31

+0

@thinksteep:好友..這是j2me代碼..不是一個Android代碼,.. – 2012-02-28 06:24:36

回答

1

你能提供一個像「處理...」等佔位符文本的答案,然後延遲之後,Web瀏覽器再試一次嗎?

+0

問題已解決我的朋友.. – 2012-05-29 07:48:01

+0

@NiravBhandari,很好聽。 :-) – 2012-05-29 07:58:33

1

我不是應用程序開發人員,反正你的網絡服務不應該有很大的響應延遲。我認爲這是你的問題,你應該解決它。製作緩存或預處理您的回覆。

雖然你可以改變超時時間(這看起來是固定的),但不建議讓許多移動(wap)代理超時30秒。