【问题标题】:Post content to a webpage and return what it gets?将内容发布到网页并返回获得的内容?
【发布时间】:2013-08-31 21:57:38
【问题描述】:

我对任何网络类型的东西都不是很好(就 C# 而言),但我需要将数据(不是获取!)发布到 Web url,然后返回它输出的内容。

到目前为止,我正在使用它来发帖并确定它是否已登录。

//credentials
        string username = textBox1.Text;
        string password = textBox2.Text;

        using (WebClient client = new WebClient())
        {
            byte[] data = Encoding.Default.GetBytes("username="+username+"&password="+password);
            client.Headers["Content-Type"] = "application/Json";
            try
            {
                var response2 = client.UploadData(base_url + "/users/authenticate", "POST", data);
                MessageBox.Show(Encoding.Default.GetString(response2));
            }
            catch { }
        }

注意:我得到的错误是 400 bad request。有什么想法吗?

【问题讨论】:

  • 这完全取决于在服务器上执行的代码。如果您无法向我们展示该代码,我们将无能为力。
  • @dtb 我正在尝试使用 vine api。内容类型为 json。
  • 文档链接?
  • @dtb 这里有更好的文档,它更难,因为我认为 vine 没有官方的 api 文档。 github.com/starlock/vino/wiki/API-Reference

标签: c# webclient


【解决方案1】:

查看 vine 代码,我会说您需要向其发送 JSON 数据而不是 URL 数据。像这样简单的东西你可以写字符串。

String jsonData = "{\"username\": \"" + username + "\", \"password\": \"" + password + "\"}";

更新为添加编码并对 JSON 数据更加严格

PHP 的 JSON 解码器需要 UTF-8 编码的数据,所以也将编码行改为

byte[] data = Encoding.UTF8.GetBytes(jsonData);

【讨论】:

  • 这会更有意义,尽管我仍然使用这种方法收到错误请求:/
  • 更新后重试。我不知道 PHP 对 JSON 编码有多严格,所以我把它弄得很严格。 PHP 也希望它使用 UTF-8 编码,所以我也包含了它。很难说 vine 想要查看 API 文档。它没有显示任何格式的身份验证数据,但代码显然是在寻找 JSON 数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多