1

我想登錄到我的Blackberryapp,但是這個應用仍然在方法GET中,我想將此應用更改爲方法POST。因爲我的服務器使用POST方法。 這是我的BB應用程序中的源代碼。如何在黑莓中製作方法POST

package com.blackberry.mobile_banking; 

import java.io.InputStream; 
import java.io.InputStreamReader; 

import javax.microedition.io.Connector; 
import javax.microedition.io.HttpConnection; 

import net.rim.blackberry.api.browser.URLEncodedPostData; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.Dialog; 

public class Check_Login { 

    HttpConnection httpconnection; 
    InputStream inputstream; 

    public Check_Login() 
    { 
    } 
    public void validasi_Login(String username, String password) 
    { 
     try { 
      URLEncodedPostData params=new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, true); 
      params.append("username", username); 
      params.append("password", password); 
      String url="http://127.0.0.1:80/proyek_akhir/cek_login.php?"+params.toString()+";deviceside=true"; 
      System.out.println(url); 

      //connect to server 

      httpconnection=(HttpConnection)Connector.open(url); 
      inputstream=httpconnection.openDataInputStream(); 

      if(httpconnection.getResponseCode()==HttpConnection.HTTP_OK) 
      { 
       InputStreamReader reader=new InputStreamReader(inputstream, "UTF-8"); 
       int readCharacter; 
       StringBuffer responseBuffer=new StringBuffer(); 

       while((readCharacter=reader.read())!=-1) 
       { 
        responseBuffer.append((char)readCharacter); 

       } 
       if(responseBuffer.toString().equalsIgnoreCase("SUCCESS")) 
       { 
        Screen_Home sc_home=new Screen_Home(); 
        UiApplication.getUiApplication().pushScreen(sc_home); 
       } 
       else if(responseBuffer.toString().equalsIgnoreCase("FAILED")) 
       { 
        Dialog.alert("Username or Password wrong"); 

       } 
      } 

     } catch (Exception e) { 

     } 

    } 

} 

,在我的服務器這個我的源代碼

<?php 
    require('db.php'); 
    $username=$_POST['username']; 
    $password=md5($_POST['password']); 
    $query="select*from user where username='$username' and password='$password'"; 
    $hasil=mysql_query($query); 
    if(mysql_num_rows($hasil)>0) 
    { 
     echo "SUCCESS"; 
    } 
    else 
    { 
     echo "FAILED"; 
    } 
?> 
+0

[HTTP POST黑莓(可能重複http://stackoverflow.com/questions/6184223/ HTTP-POST功能於黑莓)。同樣的評論和你上一個問題一樣......你在UI線程上執行網絡請求,這是一個壞主意。 – Nate

+0

@Iwanwan Harianto L試試這個:http://stackoverflow.com/questions/8969666/http-post-blackberry-null-response/8981963#8981963 – alishaik786

回答

0

試試這個 -

httpconnection=(HttpConnection)Connector.open(url); 
httpconnection.setRequestMethod(HttpConnection.POST);//this will use post method 
1

除非你的應用程序是一個MIDlet,或傳統預5.0應用程序,我使用較新的ConnectionFactory類來避免傳輸類型(BES,BIS,Wi-Fi等)的問題。回到過去,我們必須爲每種傳輸類型在URL中添加一個不同的後綴。您可避免創建一個新的工廠,可以配置一次,並在代碼的其他部分重用:

 ConnectionFactory factory = new ConnectionFactory(); 
     factory.setPreferredTransportTypes(<array of TransportInfo.TRANSPORT_XXX >); 
     factory.setTransportTypeOptions(<options>); //Only required for BIS 
     ... 

然後每次需要連接時,你得到的HttpConnection對象是這樣的:

 ConnectionDescriptor cd = factory.getConnection(<url>); 
     HttpConnection httpConn = (HttpConnection) cd.getConnection(); 
     httpConn.setRequestMethod(HttpConnection.POST); 
     //Now proceed as normal 

您可以看到的請求方法在每個新的HttpConnection實例中配置,並且與工廠無關。