私はFacebookのバッチリクエストメソッドを使ってFacebookからさまざまなユーザーを取得するVB.netアプリケーションをビルドしようとしています。私の問題は実際の要求を実行することにあるようです。応答を取得しようとすると、「Bad Request」というサーバーから400エラーが返されます。リクエストの本文を貧弱に形成している場合、またはコードに間違って貼り付けているかどうかはわかりません。ここでFacebookのバッチリクエスト
は、私の要求コードです:
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, "[email protected]")
AddBatchRequest(jsonReq, "[email protected]")
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
私は、文字列本体を形成する方法についてのバリエーションのトンを試してみたが、それらのどれも機能していない、私は追加しておりませんと信じて私をリード体は正しく
2つのニックピック:まず、手動で閉じるのではなく、ストリームの周りに常に 'Using'ブロックを使用してください。第二に、 'Not x Is y'は' x IsNot y'に短縮することができます。 –
私はVB.netを初めてお使いになりました。私の経験の大部分はc/C++になっていますので、VBの特別な構文はよくわかりません。 'Using'ブロックはストリームを手動で閉じるのに対して何をしますか? –
ストリームが開いている間に例外がスローされた場合(または関数を終了する場合)は、手動で終了することはありません。 'Using'は何があってもストリームを閉じます。 –