首页 > 解决方案 > VB.net 中的 IGDB V4 发布请求

问题描述

如果您访问:https ://reqbin.com/curl 并发布并发送此 curl 命令

curl 'https://api.igdb.com/v4/games/' \
-d 'fields name, url, cover;where id = 296;' \
-H 'Client-ID: removed' \
-H 'Authorization: Bearer removed' \
-H 'Accept: application/json'

有用。

所以我试图在 vb.net 中做到这一点

Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader

ServicePointManager.Expect100Continue = True
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

Try

    request = DirectCast(WebRequest.Create("https://api.igdb.com/v4/games/"), HttpWebRequest)

    request.Headers.Add("Client-ID: removed")
    request.Headers.Add("Authorization: Bearer removed")
    request.Headers.Add("fields: name, url, where id = 296")


    response = DirectCast(request.GetResponse(), HttpWebResponse)
    reader = New StreamReader(response.GetResponseStream())

    Dim rawresp As String
    rawresp = reader.ReadToEnd()

    rt.Text = (rawresp)


Catch ex As Exception
    MsgBox(ex.Message)
End Try

在 IGDB api V3 中,使用此代码的 http 帖子没有问题。但在 V4 中,id 不起作用。

问题出在这一行

request.Headers.Add("fields: name, url, where id = 296")

我不知道如何将“where id = 296”放在帖子请求的标题中:(我为此苦苦挣扎了好几天。如果有人能提供帮助,我将不胜感激

标签: c#vb.netapicurlpost

解决方案


感谢@Michael Welch ..我的代码可以正常工作了..我会在这里发布这个..

Public Sub SendPostData(ByVal site As String, ByVal message As String)
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

    Dim request As WebRequest
    request = WebRequest.Create(site)
    Dim response As WebResponse
    Dim postData As String = "fields " + message
    Dim data As Byte() = Encoding.UTF8.GetBytes(postData)

    request.Method = "POST"

    request.Headers.Add("Client-ID: removed")
    request.Headers.Add("Authorization: Bearer removed")
    request.ContentType = "text/plain"

    request.ContentLength = data.Length

    Dim stream As Stream = request.GetRequestStream()
    stream.Write(data, 0, data.Length)
    stream.Close()

    response = request.GetResponse()
    Dim sr As New StreamReader(response.GetResponseStream())
    rt.Text = sr.ReadToEnd

End Sub

SendPostData("https://api.igdb.com/v4/games/", "name, url; where id = 296;")

推荐阅读