【问题标题】:FormUrlEncodedContent works but StringContent does notFormUrlEncodedContent 有效,但 StringContent 无效
【发布时间】:2016-10-10 11:19:15
【问题描述】:

我对这 2 个 httpcontents 有疑问。

我制作了一个 webapi (php),从这里复制:http://www.9lessons.info/2012/05/create-restful-services-api-in-php.html 我重新使用了 Rest.inc.php,并实现了我自己的 api 文件。

我尝试从 .Net(我是 .Net 开发人员)调用此 api - 一个简单的 WinForm 应用程序 - FormUrlEncodedContent 有效,但 StringContent 无效。 这是我的代码:

Dictionary<string, string> parameters = new Dictionary<string, string>();
        parameters.Add("username", username);
        parameters.Add("title", title);
        parameters.Add("text", text);
        var jsonString = JsonConvert.SerializeObject(parameters);
        var content = new StringContent(jsonString, Encoding.UTF8, "text/json");
        //var content = new FormUrlEncodedContent(parameters);
        PostData(url, content);

以及我要使用StringContent的原因:在真实数据中,有时参数会包含一个byte[](照片),而FormUrlEncodedContent处理不了

请帮帮我 非常感谢!

【问题讨论】:

    标签: c# .net httpclient


    【解决方案1】:

    它们是非常不同的格式。如果 api 没有像 Asp.Net Web API 这样的智能模型绑定器,那么它将无法工作。您始终可以对字节数组进行 base64 编码,这是通过 HTTP 传输字节的典型方式。

    【讨论】:

    • 你能把它说得更清楚吗...在我的例子中,FormUrlEncodedContent 已经工作了,但是如果我使用来自 byte[] 的编码字符串,它说 uir 太长了:stackoverflow.com/questions/23703735/…所以我改成 StringContent,正如那篇帖子所说的那样......
    • 您想使用 JSON 还是表单编码?无论哪种方式,您都必须更改您的 PHP 服务。
    • 我觉得json还可以~~关于php服务,怎么改?我不是 php 开发人员,只是尝试为我的情况找到解决方案...
    • @haiduong87 我也不是 PHP 开发人员,但我确信有一些库可以处理 JSON。
    • 我试过restsharp 现在可以了 但是还是不知道怎么用 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2012-05-08
    • 2017-03-15
    • 2014-10-30
    • 2011-03-08
    • 2013-11-27
    • 2010-11-29
    相关资源
    最近更新 更多