неожиданный тип (позиция:text—uuid:dcd5cdf3..@3:13 в java.io.StreamReader@a0190eaa)

#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 файл. правильно ли это? если неправильно, укажите мне правильный файл библиотеки. заранее спасибо!!!!!!!!