【问题标题】:Post Data with WebClient使用 WebClient 发布数据
【发布时间】:2015-07-19 21:07:56
【问题描述】:

我正在尝试使用 WebClient 设置更改 Twitch 频道的标题、游戏和延迟的功能。 Twitch 的 API 文档提供了一个示例:

curl -H 'Accept: application/vnd.twitchtv.v3+json' -H 'Authorization: OAuth <access_token>' \
-d "channel[status]=Playing+cool+new+game!&channel[game]=Diablo&channel[delay]=0" \
-X PUT https://api.twitch.tv/kraken/channels/test_channel

我可以让标题部分正常工作,我只是不知道如何处理 -d 或发布数据部分。我尝试创建一个 NameValueCollection 并使用 UploadValue。我也试过 UploadString。

有人能指出我正确的方向吗?上面的例子(特别是 -d 部分)应该如何在 VB.net 中使用 WebClient 处理?

添加显示导致未经授权的新方法:

    Dim address As String = "https://api.twitch.tv/kraken/channels/" & Channel.TrimStart("#")
    Dim data As String = "channel[status]=" & ChannelTitle & "&channel[game]=" & Game & "&channel[delay]=" & Delay
    Dim method As String = "PUT"
    Dim client As WebClient = New WebClient()
    client.Headers("Accept") = "application/vnd.twitchtv.v3+json"
    client.Headers("Authorization") = "OAuth " & AuthCode
    Dim reply As String = client.UploadString(address, method, data)

【问题讨论】:

    标签: json vb.net curl webclient


    【解决方案1】:

    在我看来,Twitch 想让你用你的参数 HTTP PUT 一个字符串。你可以试试:

    Dim address As String = "https://api.twitch.tv/kraken/channels/test_channel"
    Dim data As String = "channel[status]=Playing+cool+new+game!&channel[game]=Diablo&channel[delay]=0" 
    Dim method As String = "PUT" 
    Dim client As WebClient = New WebClient()
    Dim reply As String = client.UploadString(address, method, data)
    

    我对 curl 不太熟悉,所以如果这不起作用,也许 -d 以某种方式将字符串处理为 JSON,在这种情况下,您可以尝试再次使用 NameValueCollection,但使用带有 ToString() 的 UploadString 发送它。

    这是您尝试使用 UploadString 的方式吗?结果如何?

    【讨论】:

    • 嗯,我想我取得了进步。我得到了 404,但现在我得到了未经授权。虽然我不知道为什么,但我过去成功地使用过这种方法。我用代码编辑了 OP。
    • 你看到我当前的例子有什么问题吗?
    • 如果 twitch 期待 JSON,您可能会在 Json.net 上获得一些运气。 newtonsoft.com/json
    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2011-07-21
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多