2010-12-23 76 views
1

我正在嘗試編寫一個腳本,將我的所有Feed項目標記爲在Google閱讀器中閱讀。它應該像發送4個變量到API鏈接一樣簡單。但是,我可以成功地向Google發送HTTP POST的唯一方式,而不會返回400錯誤,這是一種簡單的HTML FORM POST,如下所示。我嘗試過PHP cURL,但是我收到了來自Google的400錯誤消息,指出我提出了錯誤的客戶端請求。Google閱讀器API - 全部標記爲已閱讀

<form method="post" action="http://www.google.com/reader/api/0/mark-all-as-read"> 
    <input type="hidden" name="s" value="user/10408189040522127442/state/com.google/reading-list" /> 
    <input type="hidden" name="t" value="Your reading list" /> 
    <input type="hidden" name="ts" value="<?php echo time(); ?>" /> 
    <input type="hidden" name="T" value="<?php session_start(); echo $_SESSION['token']; ?>" />     
    <input type="button" value="Mark All As Read" /></form> 

使用HTML表單(因爲我有捲曲試過)提交相同的細節做工精細,成功地標誌認證的所有項目,如閱讀,但因爲表單動作設置爲外部網站,您將在提交重定向到它。爲了解決這個問題,我試着用下面的方法做一個AJAX FORM提交,所以沒有重定向,但是這不起作用並且沒有提交。

$(document).ready(function(){ 
    $("input[type=button]").click(function() { 
     $.post($('form').attr("action"), $('form').formSerialize()); 
    }); 
}); 

任何人都可以建議嗎? 1)爲什麼cURL POST不起作用,而是一個簡單的HTML FORM POST呢? 2)爲什麼我無法(靜靜地)提交HTML格式的AJAX提交?

回答

0

谷歌可能需要在發佈帖子時設置某些標題,這就是爲什麼它可能會響應400錯誤。使用cURL提交時,請檢查使用基本<form>發送的相同標題也設置。

此外,你不能$ .post()到谷歌的原因是由於same origin policy