我有一个自定义dto类:
public class myObject
{
public string Id { get; set; }
public string Name { get; set; }
}
和一个使用Web Api(4.5. net框架)的控制器
[HttpPost]
public IHttpActionResult StripArchiveMailboxPermissions(myObject param)
{
DoSomething(param);
return OK();
}
客户端只有4.0.net框架,因此我将无法使用PostAsJsonAsync()方法。将对象从客户端传递到服务器的解决方案是什么?
我尝试了如下方法:
var response = Client.SendAsync(new HttpRequestMessage<myObject>(objectTest)).Result;
然而它给了我一个例外:
Could not load file or assembly 'Microsoft.Json, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The system cannot find the file specified.
难道不能使用牛顿软件库吗?
创建一个从 HttpContent 继承的类,该类为您提供了网络流,您可以直接写入该类,而无需使用 memoryStream
大概是这样的:
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Http.Helper.Extensions
{
public class JsonHttpContentSerializer : HttpContent
{
private object Value { get; set; }
public JsonHttpContentSerializer(Object value)
{
this.Value = value;
}
protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
using (var streamWriter = new StreamWriter(stream, new UTF8Encoding(false), 1024, true))
{
using (var jsonTextWriter = new JsonTextWriter(streamWriter) { Formatting = Formatting.None })
{
var jsonSerializer = new JsonSerializer();
jsonSerializer.Serialize(jsonTextWriter, Value);
jsonTextWriter.Flush();
}
}
}
protected override bool TryComputeLength(out long length)
{
length = -1;
return false;
}
}
}
你会用喜欢它
var jsonSerializeContent = new JsonHttpContentSerializer(someContent);
httpRequestMessage.Content = jsonSerializeContent;
当然。只需为自己创建一个像这样的新HttpContent类...
public class JsonContent : HttpContent
{
private readonly MemoryStream _Stream = new MemoryStream();
public JsonContent(object value)
{
var jw = new JsonTextWriter(new StreamWriter(_Stream)) {Formatting = Formatting.Indented};
var serializer = new JsonSerializer();
serializer.Serialize(jw, value);
jw.Flush();
_Stream.Position = 0;
}
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
_Stream.CopyTo(stream);
var tcs = new TaskCompletionSource<object>();
tcs.SetResult(null);
return tcs.Task;
}
protected override bool TryComputeLength(out long length)
{
length = _Stream.Length;
return true;
}
}
现在,您可以将对象作为Json发送,如下所示
var content = new JsonContent(new YourObject());
var httpClient = new HttpClient();
var response = httpClient.PostAsync("http://example.org/somewhere", content);
我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复
主要内容:Maven依赖关系,自定义HTTP头示例HTTP消息可以包含许多描述消息属性的标头,例如内容长度,内容类型,授权等。 HttpClient提供了检索,添加,删除和枚举标头的方法。 在下面的教程中,我们将演示如何将自定义HTTP头添加到HttpClient和Http请求方法。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache HttpClient 4.5版本。 将以下依赖项添加到您的项目中。 pom.xml 文件的
我想为wordpress构建一个简单的票证系统插件。因此,我需要一个自定义的帖子类型。但是,如果保存了此帖子类型,则其帖子状态应仅为“发布”。因此,用于发布的整个默认元框都有不必要的字段。我不想要post状态下拉列表,也不想要visiblity设置字段。奇怪的是,即使我在register_post_type的参数中将属性public设置为false,也会显示此字段。 据我所知,自定义post类型的
我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。
有没有办法使用自定义Chrome标签页发送带有网址的帖子数据?就像使用网络视图一样: 在留档或示例中找不到任何相关信息。
本章节中,简述自定义类的创建和使用方法,供参考。 创建自定义类 用户可以定义自己的类,通过继承 ThingJS 内部类(比如:Thing 类),对 ThingJS 进行扩展和封装。 我们推荐使用 ES6 语法定义一个类。例如,自定义汽车类 Car。 // 继承 Thing 类 class Car extends THING.Thing { constructor(app) { super(