Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/XML请求问题_Java_Xml_Resultset - Fatal编程技术网

Java/XML请求问题

Java/XML请求问题,java,xml,resultset,Java,Xml,Resultset,第一次在这里张贴海报。我面临的问题是Java和XML。我面临的问题是,用户将向我们的系统发送VerifyAccount XML请求,根据发送的信息,我们的系统将验证帐户、发送未注册用户错误或无效帐户错误。 我对代码做了一些工作,在XML模式中添加了一个元素,只有在请求中新创建的元素在XML中被解析时,它才起作用。问题是我不想在XML请求中传递该元素,但如果排除该元素,代码将无法正常工作 Java函数是: private String checkPersonID(String[] logi

第一次在这里张贴海报。我面临的问题是Java和XML。我面临的问题是,用户将向我们的系统发送VerifyAccount XML请求,根据发送的信息,我们的系统将验证帐户、发送未注册用户错误或无效帐户错误。 我对代码做了一些工作,在XML模式中添加了一个元素,只有在请求中新创建的元素在XML中被解析时,它才起作用。问题是我不想在XML请求中传递该元素,但如果排除该元素,代码将无法正常工作

Java函数是:

    private String checkPersonID(String[] loginDetails, String serviceName, Connection conn, Element service) throws SQLException, JspException
    {
        assert loginDetails != null : "You need to set loginDetails before calling checkPersonID()";
        assert serviceName  != null : "You need to set serviceName before calling checkPersonID()";

        CallableStatement stmt = conn.prepareCall( "{call jspCheckPersonID (?)}" )

        try
        {
            stmt.setString(1, loginDetails[INDEX_USERNAME] );
            ResultSet rs = stmt.executeQuery();

            // Make sure this person is a valid user - if so return his personID, otherwise throw appropriate Exception
            if (serviceName.equals ("AccountVerify") && service.getChild("ServiceDetail").getChild("detailedErrorMesage").getText().equals ("true") && !rs.next())
            {
                throw new JspException( JspException.UNREGISTERED_ACCOUNT );
            }           
            else if ( rs.getRow() != 1 || !rs.getString("Password").trim().equalsIgnoreCase( loginDetails[INDEX_PASSWORD] ))
            {
                throw new JspException( JspException.INVALID_ACCOUNT );
            }

// code ommitted
XML中新添加的元素是detailedErrorMessage

XML请求应该是:

<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="--" Version="1.0">
    <Identification>
        <UserID>your.address@your.company</UserID>
        <Password>password</Password>
    </Identification>
    <Service>
        <ServiceName>AccountVerify</ServiceName>

        <ServiceDetail/>
    </Service>
</Request>

你的。address@your.company
密码
帐户验证
即请求,如果在该请求中添加了detailedErrorMessage元素,则该函数将按预期工作。我在这个代码中做错了什么?我已经想了好几天了,这让我头痛不已

任何帮助都将不胜感激!
谢谢

如果我理解正确,我认为您只需要在模式中将元素标记为可选。将minOccurs设置为0,maxOccurs设置为1以创建可选元素


编辑:在重读之后,如果没有详细的ErrorMessage,if块将抛出NullPointerException。当你把一堆方法调用连在一起,其中任何一个都可以为null时,你就是在玩火。检查值之前,请验证每个子级是否存在。

当前minOccurs设置为0,而maxOccurs未设置。我认为它应该设置为1作为默认值?