C # реализация новой функциональности Facebook "партии" - PullRequest
0 голосов
/ 18 марта 2011

Так что я пытаюсь использовать новую функциональность "пакетного режима" для API графа, которая описана здесь . Я думаю, что проблема в том, как я использую POST для отправки данных, и мне трудно отлаживать их. Это может быть проблема JSON, но я так не думаю. Вот с #

        HttpWebRequest httpRequest =(HttpWebRequest)WebRequest.Create("https://graph.facebook.com/");
        httpRequest.Method = "POST";
        httpRequest.ContentType = "application/x-www-form-urlencoded";

        byte[] bytedata = Encoding.UTF8.GetBytes(o.ToString());
        httpRequest.ContentLength = bytedata.Length;

        Stream requestStream = httpRequest.GetRequestStream();
        requestStream.Write(bytedata, 0, bytedata.Length);
        requestStream.Close();

        HttpWebResponse httpWebResponse = (HttpWebResponse)httpRequest.GetResponse();
        Stream responseStream = httpWebResponse.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);

        string APIData = reader.ReadToEnd();
        JObject MyApiData = JObject.Parse(APIData);

И переменная "o" содержит следующий JSON:

{
  "access_token": "[my real token]",
  "batch": [
    {
      "method": "get",
      "relative_url": "me"
    },
    {
      "method": "get",
      "relative_url": "me/friends"
    }
  ]
}

Есть идеи, что я делаю не так? На самом деле он выводит документацию для веб-сайта разработчика на Facebook ... так что я думаю, что это ключ к ошибкам; -)

1 Ответ

3 голосов
/ 02 июня 2011

Попробуйте это: приватный void PostBatch (строка _token) {

        string p1 = "access_token=" + Server.UrlEncode(_token);
        string p2  = "&batch=" + Server.UrlEncode(" [ { \"method\": \"get\", \"relative_url\": \"me\" }, { \"method\": \"get\", \"relative_url\": \"me/friends\" } ]");

        try
        {

            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("https://graph.facebook.com/");
            httpRequest.Method = "POST";
            httpRequest.ContentType = "application/x-www-form-urlencoded";

            byte[] bytedata = Encoding.UTF8.GetBytes(p1 + p2);
            httpRequest.ContentLength = bytedata.Length;

            Stream requestStream = httpRequest.GetRequestStream();
            requestStream.Write(bytedata, 0, bytedata.Length);
            requestStream.Close();

            HttpWebResponse httpWebResponse = (HttpWebResponse)httpRequest.GetResponse();
            Stream responseStream = httpWebResponse.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);

            string APIData = reader.ReadToEnd();
            Response.Write(APIData);
        }
        catch (Exception ex)
        { Response.Write(ex.Message.ToString() + "<br>"); }
       // JObject MyApiData = JObject.Parse(APIData);


    }
...