【问题标题】:IGDB V4 Post Request in VB.netVB.net 中的 IGDB V4 发布请求
【发布时间】:2021-02-04 21:15:01
【问题描述】:

如果你去: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”放在发布请求的标题中:( 我为此苦苦挣扎了好几天。如果有人可以提供帮助,真的很感激

【问题讨论】:

  • 在 curl 中,-d 是要发送的数据,所以你需要发送那个字符串,fields: name, url, where id = 296" 作为数据,预先设置HttpWebRequest.Method = "POST"。使用 StreamWriter 将数据写入请求流 (request.GetRequestStream())。删除ServicePointManager.Expect100Continue = True:你的代码没有处理它。
  • 重申@Jimi 所说的内容:fields 在您尝试遵循的示例中并未作为标头发送。
  • @Jimi 谢谢你..我会尽力做到的..
  • @MichaelWelch 是的。谢谢..我会试试的
  • @MichaelWelch 我的代码可以正常工作了.. 非常感谢先生

标签: c# vb.net api curl post


【解决方案1】:

感谢@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;")

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多