Search code examples
scalaxml-rpcbugzilla

Failure to parse loose.dtd when connected to a bugzilla server


I'm trying to connect to a bugzilla server using xmlrpc but I get an error when trying to parse http://www.w3.org/TR/html4/loose.dtd. I've seen other solutions but as I understand those were server-side solutions. I don't own the server. Is there any way I can fix this client side?

[Fatal Error] loose.dtd:31:3: The declaration for the entity "HTML.Version" must end with '>'.
Exception in thread "main" org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse server's response: The declaration for the entity
 "HTML.Version" must end with '>'.
...
Caused by: org.xml.sax.SAXParseExceptionpublicId: -//W3C//DTD HTML 4.01 Transitional//EN; systemId: http://www.w3.org/TR/html4/loose.dtd; li
neNumber: 31; columnNumber: 3; The declaration for the entity "HTML.Version" must end with '>'.
...
Caused by:
org.xml.sax.SAXParseExceptionpublicId: -//W3C//DTD HTML 4.01 Transitional//EN; systemId: http://www.w3.org/TR/html4/loose.dtd; lineNumber: 3
1; columnNumber: 3; The declaration for the entity "HTML.Version" must end with '>'.
...

Below is the relevant redacted scala code that generates the error.

import org.apache.xmlrpc.client.XmlRpcClient
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl
import java.net.URL

import scala.collection.JavaConverters._

object BugzillaHello {

  val portal = new URL("http://company.domain.com/bugzilla/xmlrpc.cgi")

  def main(args: Array[String]): Unit = {

    val config = new XmlRpcClientConfigImpl()
    config.setServerURL(portal)
    config.setEnabledForExtensions(true)

    val client = new XmlRpcClient()
    client.setConfig(config)

    val cred = Map("login" -> "my username", "password" -> "my password").asJava
    val result = client.execute("User.login", Array[Object](cred))
    println("Result = " + result)
  }
}

Solution

  • It shouldn't be serving an HTML file but is because xlmrpc isn't enabled.