⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.java

📁 Software Testing Automation Framework (STAF)的开发代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

    if (pResult.optionTimes(FILE) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(FILE), sHandle, info.requestNumber);

        if (res.rc != STAFResult.Ok) return res;

        toFile = res.result;
    }

    String toMachine = null;

    if (pResult.optionTimes(TOMACHINE) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(TOMACHINE), sHandle, info.requestNumber);

        if (res.rc != STAFResult.Ok) return res;

        toMachine = res.result;
    }

    // Send request

    try
    {
        session.requestMethod(url, method, headers, params, files, content,
                              redirect, toFile, toMachine);
    }
    catch (MalformedURLException e)
    {
        if (e.getMessage() != null)
        {
            if (e.getMessage().equals("Bad Method"))
                return new STAFResult(INVALIDMETHOD, method);

            if (e.getMessage().startsWith("Invalid URI"))
                return new STAFResult(UNKNOWNHOST, e.getMessage());

            if (e.getMessage().startsWith("Invalid protocol"))
                return new STAFResult(IOEXCEPTION, e.getMessage());
        }

        return new STAFResult(STAFResult.InvalidRequestString, e.getMessage());

    }
    catch (HttpException e)
    {
        return new STAFResult(STAFResult.UserDefined,
            e.getMessage());

    }
    catch(UnknownHostException uhe)
    {
        return new STAFResult(UNKNOWNHOST, "Unknown Host: " + url);

    }
    catch(ConnectException ce)
    {
        return new STAFResult(CONNECTERROR, "Connection Refused: " + url);

    }
    catch (FileNotFoundException e)
    {
        // error in getting files to be added to a post
        return new STAFResult(STAFResult.FileOpenError, e.getMessage());

    }
    catch (IOException e)
    {
        // error getting page

        // XXX this is a hack
        //  invalid url error not coming back correctly
        if ((e.getMessage() != null) && (e.getMessage().equals(url)))
            return new STAFResult(UNKNOWNHOST, "Unknown Host: " + url);

        // Return the Java stack trace in the result

        StringWriter sr = new StringWriter();
        e.printStackTrace(new PrintWriter(sr));

        return new STAFResult(
            IOEXCEPTION, "Error getting target url\n" + e + "\n" +
            sr.toString());
    }
    catch (STAFException e)
    {
        return new STAFResult(e.rc, e.getMessage());
    }
    catch (Exception e)
    {
        // unexpected error
        java.io.StringWriter sr = new java.io.StringWriter();
        e.printStackTrace(new java.io.PrintWriter(sr));
        System.err.println(sr.toString());

        return new STAFResult(STAFResult.UserDefined,
            "HttpClient Error\n" + e + "\n" + e.getMessage());
    }

    return getHttpResponse(info, pResult);
}

/*****************************************************************************/
/*                                                                           */
/* Method: handleFormAction                                                  */
/* Description: performs the desired form interaction                        */
/* Parameters: info - request info passed to acceptRequest                */
/* Returns: STAFResult.OK or the http result of submitting the form          */
/*                                                                           */
/*****************************************************************************/

private STAFResult handleFormAction(STAFServiceInterfaceLevel30.RequestInfo
                                   info) throws STAFException
{
    // Parse the request

    STAFCommandParseResult pResult = htmlActionParser.parse(info.request);

    if (pResult.rc != 0)
    {
        return new STAFResult(STAFResult.InvalidRequestString,
                              pResult.errorBuffer);
    }

    String formAction = "SUBMIT FORM";

    if (pResult.optionTimes(RESET) > 0)
        formAction = "RESET FORM";

    // Verify the requester has at least trust level 3

    STAFResult trustResult = STAFUtil.validateTrust(
        3, fServiceName, formAction, fLocalMachineName, info);

    if (trustResult.rc != STAFResult.Ok) return trustResult;

    // Get resolved value for SESSION option and make sure it's an integer

    STAFResult res = STAFUtil.resolveRequestVarAndCheckInt(
        SESSION, pResult.optionValue(SESSION), sHandle, info.requestNumber);

    if (res.rc != 0) return res;

    int sessionId = Integer.parseInt(res.result);

    WebSession session;

    // Get the session

    try
    {
        session = sessionList.getSession(sessionId);

    }
    catch (InvalidSessionIDException e)
    {
        return new STAFResult(STAFResult.DoesNotExist, e.getMessage());
    }

    if (!session.isOwner(info.stafInstanceUUID))
    {
        // Verify the requester has at least trust level 4 if not session owner

        trustResult = STAFUtil.validateTrust(
            4, fServiceName, formAction, fLocalMachineName, info);

        if (trustResult.rc != STAFResult.Ok) return trustResult;
    }

    // Resolve auto redirection on 3XX returns

    Boolean redirect = null;

    if (pResult.optionTimes(AUTOREDIRECT) > 0)
        redirect = new Boolean(true);

    if (pResult.optionTimes(NOAUTOREDIRECT) > 0)
        redirect = new Boolean(false);

    String id = "";
    int idType = -1;

    if (pResult.optionTimes(ID) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(ID), sHandle, info.requestNumber);

        if (res.rc != 0) return res;

        id = res.result;
        idType = WebSession.ID_ID_TYPE;

    }
    else if (pResult.optionTimes(NAME) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(NAME), sHandle, info.requestNumber);

        if (res.rc != 0) return res;

        id = res.result;
        idType = WebSession.NAME_ID_TYPE;

    }
    else if (pResult.optionTimes(INDEX) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(INDEX), sHandle, info.requestNumber);

        if (res.rc != 0) return res;

        id = res.result;
        idType = WebSession.INDEX_ID_TYPE;

    }
    else
    {
        // default to the 1st form on the page
        id = "1";
        idType = WebSession.INDEX_ID_TYPE;
    }

    String result = "";

    try
    {
        if (pResult.optionTimes(RESET) > 0)
        {
            session.resetForm(id, idType);

        }else if (pResult.optionTimes(SUBMIT) > 0)
        {
            session.submitForm(id, idType, redirect);

            return getHttpResponse(info, pResult);
        }

    }catch (InvalidElementIDException e)
    {
        return new STAFResult(STAFResult.DoesNotExist, e.getMessage());

    }catch (MalformedURLException e)
    {
        if (e.getMessage() != null)
        {
            if (e.getMessage().equals("Bad Method"))
                return new STAFResult(INVALIDMETHOD, e.getMessage());

            if (e.getMessage().startsWith("Invalid URI"))
                return new STAFResult(UNKNOWNHOST, e.getMessage());

            if (e.getMessage().startsWith("Invalid protocol"))
                return new STAFResult(IOEXCEPTION, e.getMessage());
        }

        return new STAFResult(STAFResult.InvalidRequestString, e.getMessage());

    }catch (HttpException e)
    {
        return new STAFResult(STAFResult.UserDefined,
            e.getMessage());

    }catch(UnknownHostException uhe)
    {
        return new STAFResult(UNKNOWNHOST, uhe.getMessage());

    }catch(ConnectException ce)
    {
        return new STAFResult(CONNECTERROR, ce.getMessage());

    }catch (FileNotFoundException e)
    {
        // error in getting files to be added to a post
        return new STAFResult(STAFResult.FileOpenError, e.getMessage());

    }catch (IOException e)
    {
        // error getting page
        return new STAFResult(IOEXCEPTION,
            "Error getting target url\n" + e + "\n" + e.getMessage());

    }catch (Exception e)
    {
        // unexpected error

        return new STAFResult(STAFResult.UserDefined,
            "HttpClient Error\n" + e.getMessage());
    }

    return new STAFResult(STAFResult.Ok, result);
}

/*****************************************************************************/
/*                                                                           */
/* Method: handleFollow                                                      */
/* Description: follows the specified link                                   */
/* Parameters: info - request info passed to acceptRequest                */
/* Returns: STAFResult with the http result of following the link            */
/*                                                                           */
/*****************************************************************************/

private STAFResult handleFollow(STAFServiceInterfaceLevel30.RequestInfo
                                   info) throws STAFException
{
    // Verify the requester has at least trust level 3

    STAFResult trustResult = STAFUtil.validateTrust(
        3, fServiceName, "FOLLOW", fLocalMachineName, info);

    if (trustResult.rc != STAFResult.Ok) return trustResult;

    // Parse the request

    STAFCommandParseResult pResult = htmlActionParser.parse(info.request);

    if (pResult.rc != 0)
    {
        return new STAFResult(STAFResult.InvalidRequestString,
                              pResult.errorBuffer);
    }

    // Get resolved value for SESSION option and make sure it's an integer

    STAFResult res = STAFUtil.resolveRequestVarAndCheckInt(
        SESSION, pResult.optionValue(SESSION), sHandle, info.requestNumber);

    if (res.rc != 0) return res;
    
    int sessionId = Integer.parseInt(res.result);

    WebSession session;

    // Get the session

    try
    {
        session = sessionList.getSession(sessionId);

    }
    catch (InvalidSessionIDException e)
    {
        return new STAFResult(STAFResult.DoesNotExist, e.getMessage());
    }

    if (!session.isOwner(info.stafInstanceUUID))
    {
        // Verify the requester has at least trust level 4 if not session owner

        trustResult = STAFUtil.validateTrust(
            4, fServiceName, "FOLLOW", fLocalMachineName, info);

        if (trustResult.rc != STAFResult.Ok) return trustResult;
    }

    // Resolve auto redirection on 3XX returns

    Boolean redirect = null;

    if (pResult.optionTimes(AUTOREDIRECT) > 0)
        redirect = new Boolean(true);

    if (pResult.optionTimes(NOAUTOREDIRECT) > 0)
        redirect = new Boolean(false);

    String id = "";
    int idType = -1;

    if (pResult.optionTimes(ID) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(ID), sHandle, info.requestNumber);

        if (res.rc != 0) return res;

        id = res.result;
        idType = WebSession.ID_ID_TYPE;
    }
    else if (pResult.optionTimes(NAME) > 0)
    {
        res = STAFUtil.resolveRequestVar(
            pResult.optionValue(NAME), sHandle, info.requestNumber);

        if (res.rc != 0) return res;

        id = res.result;
        idType = WebSessi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -