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