4

問候,Http POST在BlackBerry

我想從我的BlackBerry應用程序設置服務器連接。我能夠獲得有關服務器狀態的響應代碼。現在我有幾個值,我必須POST到服務器

它像一個註冊頁面值(用戶名,密碼,年齡)必須發送到服務器。

 ConnectionFactory connFact = new ConnectionFactory(); 
     ConnectionDescriptor connDesc; 
     connDesc = connFact.getConnection(url); 
     if (connDesc != null) 
     { 
      HttpConnection httpConn; 
      httpConn = (HttpConnection)connDesc.getConnection(); 
      try 
      { 
       final int iResponseCode = httpConn.getResponseCode(); 
       UiApplication.getUiApplication().invokeLater(new Runnable() 
       { 
        public void run() 
        { 
         Dialog.alert("Response code: " + Integer.toString(iResponseCode)); 
        } 
       }); 
      } 
      catch (IOException e) 
      { 
       System.err.println("Caught IOException: " + e.getMessage()); 
      } 
     } 

這就是我用來獲取響應碼的代碼。 我將不勝感激,如果有人可以幫助我如何我可以做一個POST請求到服務器.. 的狀態的服務器的URL是company.com/app/version/stats

當它註冊這將是 company.com/app/register

謝謝

回答

1
... 
httpConn = (HttpConnection)connDesc.getConnection();  
httpConn.setRequestMethod(HttpConnection.POST); 
httpConn.setRequestProperty("username",name); 
httpConn.setRequestProperty("password",pass); 
.... 
+0

我得到的迴應代碼成功,但沒有得到添加到服務器的值.. – alanvabraham 2011-05-31 09:33:46

+0

使用Wireshark的檢查sended請求。如果它是正確的,比在服務器端的錯誤(也許你需要添加用戶代理或其他..) – oxigen 2011-05-31 11:43:52

6

你使用什麼類型的POST?如果您只是傳遞鍵值對,那麼它應該是「application/x-www-form-urlencoded」內容類型的POST。

所以,你缺少的代碼是:

1)。在您的連接上設置適當的內容類型:

httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

2)。準備要通過POST發送到服務器的內容:

URLEncodedPostData encPostData = new URLEncodedPostData("UTF-8", false); 
encPostData.append("username", username); 
encPostData.append("password", password); 
encPostData.append("age", age); 
byte[] postData = encPostData.toString().getBytes("UTF-8"); 

3)。設置內容長度的連接(這一步是可選的 - 沒有嘗試這第一個,可能是BB OS是足夠聰明的自動設置此):

httpConn.setRequestProperty("Content-Length", String.valueOf(postData.length)); 

4)。打開一個OutputStream和寫的內容給它(代碼簡化):

OutputStream os = httpConn.openOutputStream(); 
os.write(postData); 
os.flush(); 
+0

嗨,它是給空指針異常。與OutputStream和postData相關的東西,但postData有一些值,我不知道它爲什麼給予空指針異常。 – 2012-11-14 10:32:27

+0

@AhmadShahwaiz:請提出一個單獨的SO問題,發佈您的代碼和堆棧跟蹤。 – 2012-11-14 11:29:26

+0

@Archimed如果你可以回答這個問題,我已經請了這個,謝謝。 :http://stackoverflow.com/questions/13377021/blackberry-httppost-null-pointer-exception-java – 2012-11-14 12:06:00