Java 获取HTTP响应时出错

Java 获取HTTP响应时出错,java,oauth,gdata,Java,Oauth,Gdata,我正在尝试使用以下代码生成请求令牌: protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FileNotFoundException, IOException, Base64DecoderException, InvalidKeySpecException, NoSuchAl

我正在尝试使用以下代码生成请求令牌:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, FileNotFoundException, IOException, Base64DecoderException, InvalidKeySpecException, NoSuchAlgorithmException, OAuthException {
//        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();


        try {
            String CONSUMER_KEY = "www.google.com";

            GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
            oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
            oauthParameters.setScope("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
            oauthParameters.setOAuthCallback("callbackUrl.jsp");

            BASE64Encoder encoder = new BASE64Encoder();
            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
            keyGen.initialize(1024, random);

            KeyPair pair = keyGen.generateKeyPair();
            PrivateKey priv = (RSAPrivateKey) pair.getPrivate();
            //PublicKey pub = pair.getPublic();

            GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthRsaSha1Signer(priv));
            oauthHelper.getUnauthorizedRequestToken(oauthParameters);

            String approvalPageUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
            System.out.println("Callback URL : " + approvalPageUrl);
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet requestServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet requestServlet at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
             */
        } finally {
            out.close();
        }
    }
我的错误是什么?在这里,作用域url肯定是正确的。你也可以在谷歌网址上试试。如果requestUrl本身仍然存在错误,请帮助说明错误可能是什么


另外,当我将请求抛出到请求Url时,
"https://www.google.com/accounts/OAuthGetRequestToken?oauth_callback=callbackUrl.jsp&scope=https%3A%2F%2Fspreadsheets.google.com%2Ffeeds%2Fspreadsheets%2Fprivate%2Ffull&oauth_nonce=7977789106925&oauth_signature_method=RSA-SHA1&oauth_consumer_key=www.google.com&oauth_timestamp=1296200317&oauth_signature=FFNlR4vB%2FOAs3006VGG4wKQkB3TbGDmyg4KN04YvicZfQ6Y9%2FHp5ZVinyhTI5YB%2BQmxFu%2BPXGL3iQcVCr2Ap2Y4abwMnX%2Bi4q3%2FNMR8G1IGJVJJ%2Fpu9X5RIQHIJPNLMCDGJLXOZLIM5%2Bv0ZDWC%2B6cDFCess0Iuzhh%2BdqP6I%3D“,它给我错误的签名!!!:(

这是因为URL导致了HTTP 400错误。请参阅:

Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://www.google.com/accounts/OAuthGetRequestToken?oauth_callback=callbackUrl.jsp&scope=https%3A%2F%2Fdocs.google.com%2Ffeeds%2F&oauth_nonce=6077341098309&oauth_signature_method=RSA-SHA1&oauth_consumer_key=www.google.com&oauth_timestamp=1296198416&oauth_signature=h%2F0IlDlsMYy2HqXv%2FksrOX3XCm51IwwpoRMjgLwGOJXTwSbZkTP%2FguIH7ZRXfL16DtHAlULhyyvqapCR3pSA%2BKqZdcr5kdHMHWlnRGglHQb54X%2BT8EOWPr9xTQOd0DDbQrLvau6RJhhSFxov95mU2UDQa2vI%2FRoyVMpAGqNUi4c%3D         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)         at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)         at com.google.gdata.client.authn.oauth.OAuthHttpClient.getResponse(OAuthHttpClient.java:66)         ... 30 more 

验证您的URL是否正确。有关HTTP 400错误的详细信息,请单击。

Ok!可能是时间戳错误。您知道如何修改此时间戳吗?“oauth_timeStamp=1296198416”“我认为您希望将
oauth_callback
参数设置为绝对URL,如@user284291:共享您的解决方案如何。谢谢。作为参考:我可能建议在这种情况下使用HMAC-SHA1签名方法。调试要容易得多。您的回调URI也必须是绝对URL。您还可能会发现oauth方法很有用:
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://www.google.com/accounts/OAuthGetRequestToken?oauth_callback=callbackUrl.jsp&scope=https%3A%2F%2Fdocs.google.com%2Ffeeds%2F&oauth_nonce=6077341098309&oauth_signature_method=RSA-SHA1&oauth_consumer_key=www.google.com&oauth_timestamp=1296198416&oauth_signature=h%2F0IlDlsMYy2HqXv%2FksrOX3XCm51IwwpoRMjgLwGOJXTwSbZkTP%2FguIH7ZRXfL16DtHAlULhyyvqapCR3pSA%2BKqZdcr5kdHMHWlnRGglHQb54X%2BT8EOWPr9xTQOd0DDbQrLvau6RJhhSFxov95mU2UDQa2vI%2FRoyVMpAGqNUi4c%3D         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)         at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)         at com.google.gdata.client.authn.oauth.OAuthHttpClient.getResponse(OAuthHttpClient.java:66)         ... 30 more