2011-02-12 52 views
0

一直在這一天工作,並沒有得到它的地方。試圖獲取Java中的Google Spreadsheet返回HTTP錯誤405

我的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方法不允許。例外是返回我的網址,我可以在我的瀏覽器中正常訪問該頁面。我發現setDoOutput(true)在內部執行POST。但是,如果我刪除該行,conn.getInputStream()爲空,並且conn.getOutputStream()似乎不會返回任何內容 - 但也許我將其設置爲錯誤?

回答

1

我不建議你這樣做,即使你現在正在工作,但如果Google開始改變它,你不能確保你將來能夠繼續工作。可以考慮使用Google Spreadsheet API。提供的Java示例非常簡單,您應該能夠完成您想要的任務。

+0

除了我不相信API讓我導出/檢索文件作爲TSV,這是我的最終目標。 – GJTorikian

+0

然後查看此示例:http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheets。它允許您導出爲TSV文件。 – limc

0

我會建議使用像Fiddler網絡調試,看看究竟你的應用程序在GET請求發送,並將它與您的瀏覽器。你可能錯過了一個重要的頭文件或者其他的東西,而Fiddler讓你很容易慢慢地將瀏覽器的請求分解爲基本元素(只需拖動一個請求來克隆它,然後取出頭文件)。

+0

嗯 - 我用HTTP客戶端(我在Mac上),並得到一個「((從服務器返回的零長度響應)」響應。 – GJTorikian

+0

Bleh,我也懷疑是否因爲我通過https訪問URL。 – GJTorikian