将php转换为Java代码有问题


converting php to Java code trouble

我正在尝试用java编写以下部分的php代码。我将提供php代码和java代码。我想帮助的是a)我是否走上了正确的轨道,b)在"请在这里帮忙"评论的行中,我不确定如何在java中做到这一点。这条线是header("Location: ".$strCitiRedirectURL.$content."");

提前谢谢。

php代码:

$req =& new HTTP_Request($strCitiLoginURL);
            $req->setMethod(HTTP_REQUEST_METHOD_POST);
            $req->addPostData("instusername", $strInstUsername);
            $req->addPostData("institution", $strInstitution);
            $req->addPostData("key", $strInstitutionKey);
            $req->addPostData("type", "returning");
            $response = $req->sendRequest();
            if(isset($_GET['showDebug'])){          
                print $req->_buildRequest(); 
            }
            if (PEAR::isError($response)) {
                $content = $response->getMessage();
            } else {
                $content = $req->getResponseBody();
            }
            /* Check for 44 Character UUID */
            if (preg_match($pattern,$content)){
                print 'Success';
                ob_start();
                header("Location: ".$strCitiRedirectURL.$content."");
                ob_flush();
            /* No UUID.  Login to CITI failed.  We may need a new user */
            }elseif ($content == "-  error: learner not affiliated with institution, add learner or provide username and password"){
                // Resubmit as a new user
                /* Package data up to post to CITI */
                $req =& new HTTP_Request($strCitiLoginURL);
                $req->setMethod(HTTP_REQUEST_METHOD_POST);
                $req->addPostData("instusername", $strInstUsername);
                $req->addPostData("institution", $strInstitution);
                $req->addPostData("key", $strInstitutionKey);
                $req->addPostData("type", "new");
                $req->addPostData("first", $strFirst);
                $req->addPostData("last", $strLast);
                $req->addPostData("email", $strEmail);
                $response = $req->sendRequest();
                if(isset($_GET['showDebug'])){          
                    print $req->_buildRequest(); 
                }
                if (PEAR::isError($response)) {
                    $content = $response->getMessage();
                } else {
                    $content = $req->getResponseBody();
                }
                /* Check for 44 Character UUID */
                if (preg_match($pattern,$content)){
                    print 'Success';
                    ob_start();
            /*PLEASE HELP ON THIS LINE*/ header("Location: ".$strCitiRedirectURL.$content."");
                    ob_flush();
                }else{
                    $errMsg = $errMsg.' <li>CITI Error Returned: '.$content.'.</li>';
                }

java代码

//****CITI CONFIGURATION****
            final String pattern = "([0-9A-''-]{44})";
            final String CitiRedirectUrl = "https://www.citiprogram.org/members/mainmenu.asp?strKeyID=";
            final String CitiLoginUrl = "http://www.citiprogram.org/remoteloginII.asp";
            //****END CITI CONFIGURATION****
            try {
                // Construct data
                String data = URLEncoder.encode("instusername", "UTF-8") + "=" + URLEncoder.encode(c_form.getCan(), "UTF-8");
                data += "&" + URLEncoder.encode("institution", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
                data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
                data += "&" + URLEncoder.encode("type", "UTF-8") + "=" + URLEncoder.encode("returning", "UTF-8");
                // Send data
                URL url = new URL("http://www.citiprogram.org/remoteloginII.asp");
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(data);
                wr.flush();
                // Get the response
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = rd.readLine()) != null) {
                    System.out.println(line);
                    if (pregMatch(pattern, line)) {
                        //Do the header part from the php code
                    } else if (line.equals("-  error: learner not affiliated with institution, add learner or provide username and password")) {
                        // Resubmit as a new user
            /* Package data up to post to CITI */
                        // Construct data
                        String newdata = URLEncoder.encode("instusername", "UTF-8") + "=" + URLEncoder.encode(c_form.getCan(), "UTF-8");
                        newdata += "&" + URLEncoder.encode("institution", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
                        newdata += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
                        newdata += "&" + URLEncoder.encode("type", "UTF-8") + "=" + URLEncoder.encode("returning", "UTF-8");
                        // Send data
                        OutputStreamWriter newwr = new OutputStreamWriter(conn.getOutputStream());
                        newwr.write(data);
                        newwr.flush();
                        // Get the response
                        BufferedReader newrd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                        String newline;
                        while ((newline = newrd.readLine()) != null) {
                            System.out.println(newline);
                            if (pregMatch(pattern, newline)) {
                            } else {
                                //Print error message
                            }
                        }
                    }
                }
                wr.close();
                rd.close();
            } catch (Exception e) {
            }
//Check for 44 character UUID
    public static boolean pregMatch(String pattern, String content) {
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(content);
        boolean b = m.matches();
        return b;
    }

我相信

header("Location: ".$strCitiRedirectURL.$content."");

在PHP中与以下在Java中相同(使用wr对象):

wr.sendRedirect("http://path.to.redirect/");

你也可以转发请求,但我有一种感觉,你只是想让客户重定向到citirewards或其他什么,在这种情况下,sendRedirect就是解决方案。

编辑:来源-http://docs.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletResponse.html#sendRedirect(java.lang.String)