我正在從http://blog.blackballsoftware.com/2010/11/03/making-a-facebook-wall-post-using-the-new-graph-api-and-c/重寫代碼創建一個類來發布到Facebook。只要我不對發佈數據進行URLEncode編碼,代碼就可以工作。例如:如果發佈數據是「消息=測試,請忽略」,那麼它的工作原理。如果我將相同的數據編碼爲「message%3dTest%2cplease + ignore」,那麼我得到錯誤{「error」:{「message」:「(#100)Missing message or attachment」,「type」:「OAuthException」, 「代碼」:100}}。如何URLEncode Facebook發佈數據在C#
郵政數據應該URLEncoded?我認爲這應該是因爲如果我發佈這樣的消息,「測試&消息」,那麼只會出現單詞測試。
相關代碼如下。如果postParams = HttpUtility.UrlEncode(postParams);被註釋掉了,那麼代碼就起作用了。如果沒有,Facebook會返回消息丟失的錯誤。
postParams = HttpUtility.UrlEncode(postParams);
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postParams);
webRequest.ContentLength = bytes.Length;
System.IO.Stream os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
try
{
var webResponse = webRequest.GetResponse();
}
catch (WebException ex)
{
StreamReader errorStream = null;
errorStream = new StreamReader(ex.Response.GetResponseStream());
error = errorStream.ReadToEnd() + postParams;
}