iam using KSOAP2 for web services. my client is BlackBerry Phone and Server is KeyRingLabs.com. i am using php page for connection...i have taken this code form a Forum.and modified it according to my requirements...but I am having XMLPULLPARSER EXCEPTION...can any body help???
here is my code....
import net.rim.device.api.ui.;
import net.rim.device.api.ui.component.;
import net.rim.device.api.ui.container.;
import net.rim.device.api.system.;
import java.util.;
import
org.ksoap2.;
import
org.ksoap2.serialization.;
import
org.ksoap2.transport.;
import java.io.IOException;
import
org.ksoap2.SoapEnvelope;
import
org.ksoap2.SoapFault;
import
org.ksoap2.serialization.SoapObject;
import
org.ksoap2.serialization.SoapSerializationEnvelope;
import
org.ksoap2.transport.HttpTransport;
import
org.xmlpull.v1.XmlPullParserException;
final class StockQuoteDemo extends UiApplication
{
public static void main (String[] args)
{
StockQuoteDemo theApp = new StockQuoteDemo ();
theApp.enterEventDispatcher ();
}
public StockQuoteDemo ()
{
pushScreen (new StockQuoteScreen ());
//doSOAP();
}
final class StockQuoteScreen extends MainScreen
{
public static final String action = "http://keyringlabs.com/Login";
public static final String namespaceRoot = "bbpointofsale.com";
//public static final String webroot = "http://192.168.1.2/bbpointofsale.com/";
public static final String webroot = "http://192.168.0.35/";
//public static final String webroot = "http://www.bbpointofsale.com";
public String errorMessage;
public String key;
public String transactionID;
private HttpTransport transport;
private SoapSerializationEnvelope envelope;
public StockQuoteScreen ()
{
//transport = new HttpTransport(webroot + "bb/service/index.php");
transport = new HttpTransport(webroot+"Disk/rashid11/index4.php");
transport.debug = true;
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
key = null;
envelope.encodingStyle = SoapSerializationEnvelope.XSD1999;
ProcessLogin("
[email protected]","123456");
//Dialog.alert("GEN 1");
//Dialog.alert("Warr Gai Vai!!!");
}
public boolean onClose ()
{
Dialog.alert ("Goodbye!");
System.exit (0);
return true;
}
public boolean ProcessLogin(String email, String password) {
System.err.println("Starting The Process");
errorMessage = "";
String namespace = "urn:" + namespaceRoot + ":login";
//System.err.println("LINK:"+namespace);
// SoapObject message = new SoapObject(namespace, "login");
SoapObject message = new SoapObject(namespaceRoot, "login");
message.addProperty("email", email);
message.addProperty("password", password);
envelope.bodyOut = message;
// System.err.println("KSOAP:"+ envelope.toString());
//String soapAction = namespace + "#login";
String soapAction = "http://bbpointofsale.com/login";
// System.err.println("Action : "+soapAction);
try {
//transport.setXmlVersionTag("");
transport.call(soapAction, envelope);
} catch (IOException e) {
e.printStackTrace();
System.out.println("error: "+e.getMessage());
errorMessage = e.getMessage();
System.out.println("response1: "+transport.responseDump);
return false;
} catch (XmlPullParserException e) {
e.printStackTrace();
errorMessage = e.getMessage();
System.out.println("request2: "+transport.requestDump);
System.out.println("response2: "+transport.responseDump);
return false;
}
try {
SoapObject result = (SoapObject) ((SoapObject)envelope.getResponse()).getProperty(0);
key = hackToGetResponse("serviceToken", result.toString());
if (key.length() > 0) {
System.out.println("KEY:" + key);
return true;
} else {
}
} catch (SoapFault e) {
errorMessage = e.getMessage();
System.out.println("response3: "+transport.responseDump);
return false;
} catch (Exception e) {
errorMessage = e.getMessage();
System.err.println("response4: "+transport.responseDump);
return false;
}
return false;
}
public String hackToGetResponse(String key, String response) {
System.out.println("hackToGetResponse:" + response);
String start = "anyType{key=" + key + "; value=";
String end = "; }";
if (response.indexOf(start) == -1 ||
response.indexOf(end) == -1) return "";
System.out.println("hackToGetResponse:" + "response.substring(0, " + response.indexOf(start) + ").substring(0, " + response.indexOf(end) + ");");
response = response.substring(response.indexOf(start) + start.length());
response = response.substring(0, response.indexOf(end));
if (response.indexOf("anyType{}") != -1) return "";
return response;
}
}
}
//******************PHP FILE************************
$server = new SoapServer(null, array('uri' = "urn:keyringlabs.com"));
//$server = new SoapServer(null, array('uri' = "urn: bbpointofsale.com"));
$server-addFunction("login");
//$email='
[email protected]';
//$pass='123456';
function login($email, $pass) {
if (strlen($email) == 0) {
return Array('serviceToken' => '');
} elseif (strlen($pass) == 0) {
return Array('serviceToken' => '');
} else {
$objMerchant = Merchant::LoadByEmailPassword($email, $pass);
if ($objMerchant == null || $objMerchant->Id <==1) {
return Array('serviceToken' => '');
} else {
$key = uniqid();
$objSess = new Merchantsessions();
$objSess->MerchantID = $objMerchant->Id;
$objSess->ServiceToken = $key;
$objSess->Save();
}
}
$result = Array('serviceToken' => $key);
//print $result;
return $result;
}
?
///****************************************
is there any need of an XML page or something..to run it perfectly...please help
thank you for your time!