1

내 Blackberryapp에 로그인하고 싶지만이 앱은 여전히 ​​GET에서이 메서드를 POST 메서드로 변경하고 싶습니다. 내 서버는 POST 메서드를 사용하기 때문입니다. 내 BB 앱의 소스 코드입니다. Blackberry에서 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-in-blackberry). 또한 마지막 질문과 같은 주석 ... UI 스레드에서 네트워크 요청을 수행하고있는 것이 좋지 않습니다. – Nate

+0

@Irwan Harianto L이 항목 사용해보기 : http://stackoverflow.com/questions/8969666/http-post-blackberry-null-response/8981963#8981963 – alishaik786

답변

0

이 시도 - 앱이 사전 5.0 응용 프로그램 미들 릿, 또는 기존이었다 않는

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

를, 내가 좋겠 새로운 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 인스턴스에서 구성되며 공장과는 아무런 관련이 없습니다.

관련 문제