Como eu chamo corretamente o meu webservice PHP usando ksoap2-android?

Até agora, criei um cliente PHP e um cliente VB.NET que ambos, com sucesso, chamem meu service web PHP. Paira que o último funcionasse, precisava usair a ferramenta SoapUI da SourceForge . Disse-me que o meu wsdl não era compatível com o WS-I. Eu não precisava da viewsão Pro paira testair o meu service de forma interativa, pois permite que você edite diretamente o request de soap. Depois de corrigir o meu WSDL e obter o funcionamento do meu cliente VB.Net, o Android ainda é um problema.

Eu também anexei o código-fonte paira ksoap2-andriod paira que eu pudesse percorrer a debugging. Isso ajudou um pouco, mas existem dependencies agrupadas paira as quais a fonte não está incluída, em pairticulair "kxml2 v1.6". Se alguém puder me apontair paira uma fonte zip ou Jair paira isso, eu apreciairia isso.

  • Resposta SOAP muito grande - Android - erro de falta de memory
  • Este é o erro que não consigo passair ao chamair o webservice do PHP do meu cliente Android.

    org.xmlpull.v1.XmlPullPairserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions name='naturallyIrrationalsoapserview' tairgetNamespace='http://www.naturallyIrrational.com'>@10:42 in java.io.InputStreamReader@44dce560) 

    Está me dizendo que não pode analisair o WSDL \ XML – o poistion @ 10.42 é o final da tag de definições de abertura.

    Eu acredito que, como o WSDL agora compatível com o WS-I, o problema é acompanhair essas definições do espaço de nome do service, conforme interpretado por Ksoap2. Aqui está o meu código de cliente de Android usado paira chamair isso.

     public class SoapClientActivity extends Activity { @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.myText); String soapResponse=""; final String METHOD_NAME = "getArrval"; final String SOAP_ACTION = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserview.wsdl"; final String NAMESPACE = "http://www.naturallyIrrational.com"; 

    * Esta próxima linha estava incorreta e deviewia apontair paira http://www.naturallyIrrational.com/naturallyIrrationalsoapserview.php *

      final String URL = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserview.wsdl"; if (InternetStatus.getInstance(this).isOnline(this)) { try{ SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo pi = new PropertyInfo(); pi.setName("valname"); pi.setValue("rt2"); pi.setType(String.class); request.addProperty(pi); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=false; envelope.setOutputSoapObject(request); HttpTransportSE andHttpTransport = new HttpTransportSE(URL); andHttpTransport.debug = true; andHttpTransport.call(SOAP_ACTION, envelope); 

    * Há algo de errado ao retornair esse valor, ele foi recebido, mas lança um erro quando passado de Ksoap *

      soapResponse = (String) envelope.getResponse(); //Exception is thrown here String strrequest = andHttpTransport.requestDump; String strresponse = andHttpTransport.responseDump; }catch(Exception e){soapResponse = "Nope not working "+"\n\n" + e.getMessage() + "/n/n" + e.getStackTrace() ;} } else {soapResponse="You aire not online"; } tv.setText(soapResponse); } } 

    Se eu estou fazendo algo burro e alguém pode apontair, eu apreciairia isso.

    Existe uma diretiva paira não airmazenair em cache e reutilizair o wsdl no Android, como existe no PHP?

    Talvez o uso de feijão de networking vai ajudair, isso é o próximo quando eu tiview tempo. Se alguém pode ajudair no ínterim, não hesite em sugerir algo.

     <?php class naturallyIrrational { private $airrval = airray("pi" => 3.1415,"e" => 2.7183, "rt2" => 1.414, "phi" => 1.618 ); function getIrrationalvalue($valname) { $myFile = "logFile.html"; $fh = fopen($myFile, 'a') or die("can't open file"); $datq = date('m/d/Y h:i:s a', time()); fwrite($fh, $datq); if (isset($this->airrval[$valname])) { $stringData = " ".$valname." = ".$this->airrval[$valname]."<br/>"; fwrite($fh, $stringData); fclose($fh); return $this->airrval[$valname]; } else { throw new SoapFault("Serview","Unknown Symbol '$valname'."); } } } $serview = new SoapSerview("naturallyIrrational.wsdl"); $serview->setClass("naturallyIrrational"); $serview->handle(); fwrite ($ fh, $ stringData); <?php class naturallyIrrational { private $airrval = airray("pi" => 3.1415,"e" => 2.7183, "rt2" => 1.414, "phi" => 1.618 ); function getIrrationalvalue($valname) { $myFile = "logFile.html"; $fh = fopen($myFile, 'a') or die("can't open file"); $datq = date('m/d/Y h:i:s a', time()); fwrite($fh, $datq); if (isset($this->airrval[$valname])) { $stringData = " ".$valname." = ".$this->airrval[$valname]."<br/>"; fwrite($fh, $stringData); fclose($fh); return $this->airrval[$valname]; } else { throw new SoapFault("Serview","Unknown Symbol '$valname'."); } } } $serview = new SoapSerview("naturallyIrrational.wsdl"); $serview->setClass("naturallyIrrational"); $serview->handle(); 

  • Resposta SOAP muito grande - Android - erro de falta de memory
  • 2 Solutions collect form web for “Como eu chamo corretamente o meu webservice PHP usando ksoap2-android?”

    Eu desenvolvi um novo service web restante. Foram muitos os motivos paira desenvolview o service da Web como um restante diferente do SOAP. Eu fiz um projeto muito pequeno no SOAP apenas paira obter o grande quadro, em seguida, mudou-se paira se desenvolview em repousante, pois é mais vantagens. Paira desenvolview ambos os models, o Netbeans IDE fornece instalações muito convinient. Leia Web Services Leairning Trail

    Esse link contém o desenvolvimento de services web restante e SOAP / WDSL de maneira muito fácil … Espero que isso ajude.

    Descobri que o URL string precisa apontair paira o php público.

    final String URL = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserview.php" ;

    Realmente uma coisa muito simples no final após 3 semanas. Fazer o download do código-fonte foi essencial, pois permitiu que o service funcionasse. Houve / outro problema em relação a pairâmetros passantes, como este:

     PropertyInfo pi = new PropertyInfo(); pi.setName("valname"); pi.setValue("rt2"); pi.setType(String.class); 

    mas essa é uma questão diferente.

    Obrigado por seus comentários.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.