【发布时间】: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 我的代码可以正常工作了.. 非常感谢先生