#java #blackberry #blackberry-simulator
#java #ежевика #blackberry-симулятор
Вопрос:
я новичок в blackberry и вызываю службы WCF с помощью метода ksoap. когда я вызываю службу, она выдает сообщение об ошибке в симуляторе. Ошибка заключается в:
неожиданный тип (позиция:text—uuid:dcd5cdf3..@3:13 в java.io.StreamReader@a0190eaa)
эта служба успешно вызывается в dot net.
Мой код:
String serviceUrl = "<service url>";
String serviceNameSpace ="<service namespaces>";
String soapAction = "<service soapaction>";
String methodName = "logOn";
SoapObject rpc = new SoapObject(serviceNameSpace, methodName);
//String a="52";
//String b="28";
rpc.addProperty("username", String.valueOf(edUserName.getText()));
rpc.addProperty("password",String.valueOf(edPaswd.getText()));
// rpc.addProperty("a","nil");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true; //IF you are accessing .net based web service this should be true
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
//HttpTransport ht = new HttpTransport(serviceUrl);
HttpTransport ht = new HttpTransport(serviceUrl "; deviceside=true; apn=blackberry.net");
ht.debug = true;
//SoapObject result=null;
//ht.setXmlVersionTag("");
try
{
ht.call(soapAction, envelope);
String result = (envelope.getResponse()).toString();
Dialog.alert(result);
Dialog.alert("login success");
}
catch(Exception ex2)
{
Dialog.alert("error is :" ex2.getMessage());
}
// if((edUserName.getText().equals("")))
// {
// Dialog.alert("Enter User Name ");
// }
// if(edPaswd.getText().equals(""))
// {
// Dialog.alert("Enter Password");
//
// }
Ответ №1:
Ошибка StreamReader означает, что из HttpTransport поступают неверные данные. Попробуйте сделать то, что предлагается в этом сообщении на форуме, тем более что оно также имеет дело с веб-сервисом .NET.
Комментарии:
1. пожалуйста, подскажите мне актуальную проблему в моем коде и какие изменения требуются?
2. Я не уверен, где вам нужно изменить свой код. В сообщении, на которое я ссылался, указывалось, что единственной вещью, влияющей на BB-код, было то, что URL-адрес службы указывал на
http://localhost...
, а неhttp://hostname...
на. Все остальное было сделано для проверки того, что ваш веб-сервис работает правильно.3. Далее на этом форуме, похоже, что используемая библиотека не может анализировать сообщения об ошибках HTTP. Похоже, что ваш код не может разобрать эту строку с помощью «uuid: dcd5cdf3 …». Вы уверены, что ваш веб-сервис отправляет обратно действительный SOAP / XML?
4. я изменил свой URL-адрес с локального хоста на имя хоста, но он выдает ту же ошибку. Какие-либо другие изменения, требуемые в программе?
5. я уверен, что мой веб-сервис отправляет обратно действительные данные, потому что я успешно вызвал этот веб-сервис из .net. и я отправляю те же данные на веб-сервис. в чем проблема? я использовал ksoap2-j2me-core-prev-2.1.2.jar файл. правильно ли это? если неправильно, укажите мне правильный файл библиотеки. заранее спасибо!!!!!!!!