【问题标题】:Trying to GET a Google Spreadsheet in Java is returning HTTP error 405尝试在 Java 中获取 Google 电子表格返回 HTTP 错误 405
【发布时间】:2011-02-12 18:42:40
【问题描述】:

整天都在做这件事,却一无所获。

我的 Java 代码如下所示:

final URL url = new URL(String.format("https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=%s&exportFormat=tsv&gid=0", spreadsheetId));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
conn.setRequestProperty("Authorization",   "GoogleLogin auth=" + wiseAuth.getAuthToken());    
conn.setRequestProperty("GData-Version", "3.0");

conn.setRequestMethod("GET");

conn.setDoOutput(true); // trouble here, see below

conn.setInstanceFollowRedirects(true);    
conn.connect();

我在尝试执行 conn.getInputStream() 时总是收到 FileNotFound 错误。我将其缩小为响应代码是 405 Method Not Allowed。例外是返回我的 URL,我可以在浏览器中正常访问该页面。

就在那时我发现setDoOutput(true) 在内部执行了一个 POST。但如果我删除该行,conn.getInputStream() 为空,conn.getOutputStream() 似乎什么也没有返回——尽管我可能设置错了?

【问题讨论】:

    标签: java httpurlconnection google-sheets


    【解决方案1】:

    我不建议您这样做,即使您现在可以使用它,但如果 Google 开始对其进行更改,您也无法确保将来可以使用它。

    请考虑使用Google Spreadsheet API。提供的 Java 示例非常简单,您应该能够完成您想要的。

    【讨论】:

    【解决方案2】:

    我建议使用像 Fiddler 这样的网络调试器来查看您的应用程序在 GET 请求中发送的具体内容,并将其与您的浏览器进行比较。您可能会遗漏重要的标头或其他内容,而 Fiddler 可以很容易地将浏览器的请求慢慢剥离到基本元素(只需拖动请求以克隆它,然后取出标头)。

    【讨论】:

    • 嗯——我使用了 HTTP 客户端(我在 Mac 上),我得到一个“((从服务器返回的零长度响应。))”响应。
    • Bleh,我也想知道是不是因为我通过https访问URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多