Ruby REXML ParseException atar, ancak PHP xml ayrıştırıcı işleri

1 Cevap php

Ben bir Ruby komut dosyası aracılığıyla bir PHP sayfası bir web hizmetini çağırmak için çalışıyorum. PHP komut dosyası bir dize döndürür ve kendisi başka bir web hizmeti çağrıları; Ben yalnız bir PHP komut dosyası test ettik ve tek bir dize döndürür. Ben aşağıdaki kodu kullanarak RPC üzerinden bu yöntemi çağırmak çalışıyorum:

require 'soap/rpc/driver'
driver = SOAP::RPC:Driver.new('http://mysite.com/services/webservices.php', 'urn:mysite')
driver.add_method('getMobileCarrier', 'phoneNumber')
driver.getMobileCarrier('15551234567') # fake number, obviously

Ben bu sonucu geri almak:

REXML::ParseException: malformed XML: missing tag start
Line: 
Position: 
Last 80 unconsumed characters:
< in <b>/var/www/html/services/webservices.php</b>
    from /opt/local/lib/ruby/1.8/rexml/parsers/baseparser.rb:356:in `pull'
    from /opt/local/lib/ruby/1.8/rexml/parsers/streamparser.rb:16:in `parse'
    from /opt/local/lib/ruby/1.8/rexml/document.rb:201:in `parse_stream'
    from /opt/local/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:27:in `do_parse'
    from /opt/local/lib/ruby/1.8/soap/parser.rb:92:in `parse'
    from /opt/local/lib/ruby/1.8/soap/processor.rb:39:in `unmarshal'
    from /opt/local/lib/ruby/1.8/soap/rpc/proxy.rb:236:in `unmarshal'
    from /opt/local/lib/ruby/1.8/soap/rpc/proxy.rb:175:in `route'
    from /opt/local/lib/ruby/1.8/soap/rpc/proxy.rb:141:in `call'
    from /opt/local/lib/ruby/1.8/soap/rpc/driver.rb:178:in `call'
    from /opt/local/lib/ruby/1.8/soap/rpc/driver.rb:232:in `getMobileCarrier'
    from (irb):4

Ben PHP kodu çalıştırmak kendisi (ve tabii ki, onu gerçek bir değer vermek) Ancak her herhangi bir hata atmak ve beklenen değerini döndürür. Bu sadece Ruby ve REXML ile çalışma değil; bunu nasıl düzeltebilirim? PHP komut dosyası çağırıyor web hizmeti bir üçüncü taraf tarafından ve ben tepkisini değiştirmek değil, ama belli ki tepki PHP iyi çalışıyor ama REXML onunla bir sorunu var.

1 Cevap

Döndürülen xml olmadan söylemek zor. Xmlstarlet, xmllint, ya da düzenli: Senin gibi bir xml doğrulama aracını kullanarak denedim.

Xml iyi oluşturulduğu takdirde bu araçlar size söyleyecektir. Iyi oluşmuş değilse o zaman bunu nasıl düzeltebilirim olarak onunla yanlış ne bağlıdır.

Daha iyi bir cevap için daha fazla ayrıntı gönderin.