Пакетные запросы Facebook - PullRequest
       11

Пакетные запросы Facebook

1 голос
/ 04 августа 2011

Я пытаюсь создать приложение VB.net, которое будет извлекать различных пользователей из Facebook с помощью метода пакетных запросов Graph API. Кажется, моя проблема заключается в выполнении самого запроса. Когда я пытаюсь получить ответ, я получаю ошибку 400 от сервера, говорящую «Плохой запрос». Я не уверен, что это означает, что я плохо формирую тело запроса или неправильно встраиваю его в код.

Вот мой код запроса:

    Dim sURL As String
    sURL = "https://graph.facebook.com"

    Dim wrGETURL As WebRequest
    wrGETURL = WebRequest.Create(sURL)
    wrGETURL.Method = "POST"
    wrGETURL.Proxy = WebRequest.DefaultWebProxy
    Dim reqStream As IO.Stream = wrGETURL.GetRequestStream()

    Dim access_token As String = "..." ' Access token removed, but it is valid

    Dim jsonReq As String = """access_token"": """ + access_token + """"
    jsonReq = jsonReq + """batch"": ["

    AddBatchRequest(jsonReq, "email1@gmail.com")
    AddBatchRequest(jsonReq, "email2@gmail.com")

    jsonReq = jsonReq + "]"

    Dim enc As New System.Text.UTF8Encoding()
    Dim jsonBytes As Byte() = enc.GetBytes(jsonReq)

    reqStream.Write(jsonBytes, 0, jsonBytes.Length)

    reqStream.Close()

    Dim oLabel As Label = output_label

    Dim objStream As Stream
    Try
        objStream = wrGETURL.GetResponse.GetResponseStream() '<<<<Crashes here

        Dim objReader As New StreamReader(objStream)
        Dim sLine As String = ""
        Dim i As Integer = 0

        Dim ostr As String = ""

        Do While Not sLine Is Nothing
            i += 1
            sLine = objReader.ReadLine
            If Not sLine Is Nothing Then
                ostr = ostr + sLine

            End If
        Loop

        oLabel.Text = ostr
    Catch ex As Exception
        oLabel.Text = ex.Message
    End Try

Private Sub AddBatchRequest(ByRef json As String, ByVal email As String)
    If json.EndsWith("}") Then
        json = json + ","
    End If
    json = json + "{""method: ""GET"", ""relative_url"": ""search?q=" + email + "&type=user""}"
End Sub

Я пробовал множество вариантов формирования тела строки, но ни один из них не работает, что наводит меня на мысль, что я не добавляю тело правильно.

1 Ответ

0 голосов
/ 16 сентября 2011

Самое простое, что можно сделать, это использовать Facebook SDK , который поддерживает пакетные запросы. Вы бы сделали что-то вроде:

Dim fb = New FacebookClient(accessToken)
Dim results = fb.Batch(New FacebookBatchParameter("search?q=email1@example.com&type=user"), New FacebookBatchParameter("search?q=email2@example.com&type=user"))

Я думаю, что вашпроблема в том, что jsonReq не является правильно отформатированным телом POST.Вставьте это значение сюда, и я уверен, что кто-то может указать конкретно, что не так.У меня не установлен VB.NET.

...