加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.net WebApi HttpClient强类型PostAync

发布时间:2020-12-16 03:27:27 所属栏目:asp.Net 来源:网络整理
导读:我想发布到Asp.Net WebApi Post方法: // POST /api/citycodepublic HttpResponseMessageCityCode Post(CityCode citycode){ try { Test.SelfTrackingEntities.BusinessLayer.BusinessManagers.CityCodeManager myCityCodeManager = new CityCodeManager(Uti
我想发布到Asp.Net WebApi Post方法:

// POST /api/citycode
public HttpResponseMessage<CityCode> Post(CityCode citycode)
{
    try
    {
        Test.SelfTrackingEntities.BusinessLayer.BusinessManagers.CityCodeManager myCityCodeManager = new CityCodeManager(Utility.GetConnectionString());
        var id = myCityCodeManager.Create(citycode);

        var response = new HttpResponseMessage<Test.SelfTrackingEntities.BusinessLayer.BusinessEntities.CityCode>(citycode) { StatusCode = HttpStatusCode.Created };
        response.Headers.Location = new Uri(VirtualPathUtility.AppendTrailingSlash(Request.RequestUri.ToString()) + citycode.Name);
        return response;
    }
    catch (Exception e)
    {
        var response = new HttpResponseMessage(HttpStatusCode.Conflict);
        response.Content = new StringContent(e.Message);
        throw new HttpResponseException(response);
    }
}

客户电话是:

var objectContent = CreateJsonObjectContent(citycode);
objectContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
var requestMessage = new HttpRequestMessage<CityCode>(citycode,jsonMediaType);
return httpClient.PostAsync(addressSuffix,objectContent).ContinueWith(task =>
{
    var responseMessage = task.Result;
    return responseMessage.Content.ReadAsAsync<CityCode>().ContinueWith(readTask =>
    {
        return readTask.Result;
    });
}).Unwrap();

但是服务器从不接收调用,我使用的是JsonNetFormatter而不是内置的格式化程序.

解决方法

你试过HttpClient( http://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx)吗?

这是一个出色的HTTP客户端,可以使用MVC 4 Web Api.看看这个:

var config = new HttpConfiguration();
        config.Routes.MapHttpRoute("default","api/{controller}/{id}",new { id = RouteParameter.Optional });

        var server = new HttpServer(config);
        var client = new HttpClient(server);

        dynamic s = new ExpandoObject();
        s.comeValue = 1;

        var d = JsonConvert.SerializeObject(s);
        var content = new StringContent(d,Encoding.UTF8,"application/json");

        var postResult = client.PostAsync("http://localhost:29722/api/whatevercontroller",content).Result;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读