c# - 使用 IHttpContent 发出 HttpClient.PutAsync 请求

标签 c# httprequest httpclient put httpcontent

如何创建一个 IHttpContent 对象,其中包含 PutAsync 请求正文的内容?

请求是这样的:

IHttpContent myHttpContent = ???
var response = await httpClient.PutAsync(uri, myHttpContent);


我正在使用 Windows.Web.HttpClient 库。

最佳答案

通过样本我找到了here ,我设法解决了我的问题。
我使用 IHttpContent 接口(interface)实现了一个新类,并对我的内容使用了 Json.Parse。类接口(interface)如下所示:

    public class HttpJsonContent : IHttpContent {
        IJsonValue jsonValue;
        HttpContentHeaderCollection headers;

        public HttpContentHeaderCollection Headers {
            get { return headers; }
        }

        public HttpJsonContent(IJsonValue jsonValue) {
            if (jsonValue == null) {
                throw new ArgumentException("jsonValue cannot be null.");
            }

            this.jsonValue = jsonValue;
            headers = new HttpContentHeaderCollection();
            headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
            headers.ContentType.CharSet = "UTF-8";
        }
    ...


我的要求是这样的:

// Optionally, define HTTP Headers
httpClient.DefaultRequestHeaders.Accept.TryParseAdd("application/json");

JsonObject jsonObj = new JsonObject();
jsonObj["content_one"] = JsonValue.CreateNumberValue(600);
jsonObj["content_two"] = JsonValue.CreateStringValue("my content value");

// Create the IHttpContent
IHttpContent jsonContent = new HttpJsonContent(jsonObj);

// Make the call
HttpResponseMessage response = await httpClient.PutAsync(uri, jsonContent);

关于c# - 使用 IHttpContent 发出 HttpClient.PutAsync 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25793560/

相关文章:

c# - 在 HttpClient C# 中支持 TLS 1.2

android - 如何重新打包 HttpClient 4.3.1 并删除对 commons-logging 的依赖?

Android HttpClient 不使用系统代理设置

c# - asp.net mvc 3.0 Razor 中的动态错误

php - 通过 PHP 唯一且持续地识别移动设备

javascript - http 查询在 Nodejs/AngularJS 环境中无法通过

http - 来自同一 session 的多个请求如何始终落在同一台服务器上?

c# - 如何从 Word 2010 插件(用 C# 开发)获取 "KeyPress"事件?

c# - 无法将表达式类型转换为返回类型

c# - Github OAuth : The remote server returned an error (403) Forbidden