aspnet核心app奇怪的请求类型

时间:2016-10-24 13:30:39

标签: php asp.net-web-api asp.net-core

我正在使用debfault aspnetidentitycore plugedin构建一个asp.net核心应用程序,唯一的变化是我通过将regiester方法修改为api添加了一个动作,这意味着可以被另一个应用程序调用。

 [HttpPost]
    [AllowAnonymous]
    public async Task<EngineResult<object>> RegisterByApi([FromBody]RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new IdentityUser
            {
                DisplayName = model.Name,
                UserName = model.Email,
                Email = model.Email,
                PhoneNumber = model.PhoneNumber,
            };

            var result = await _userManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, isPersistent: false);
                _logger.LogInformation(3, "User created a new account with password.");
                return new EngineResult<object>(true) { Entity = new { sub = user.Id, name = user.DisplayName } };
            }
            return new EngineResult<object>(false) { Entity = string.Join(";", result.Errors?.Select(e => e.Description)) };
        }

        return new EngineResult<object>(false) { Entity = string.Join(";", ModelState.Values.SelectMany(m => m.Errors).Select(e => e.ErrorMessage)) };
    }

但是当一个php调用这个api时,我得到一个奇怪的内容类型,就是这样 的应用/ JSON;边界= ------------------------ e3f0ef0cc3e74f25

这是php代码

<?php
$data = [
    "Name"=>"testname",
    "Email"=>"123@testdomain.com",
    "Password"=>"123qwe!#QWE",
    "ConfirmPassword"=>"123qwe!@#QWE",
    "PhoneNumber"=>"12312321321",
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xxxx/Account/RegisterByApi"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
header_remove(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
    )
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

任何人都知道这里发生了什么?

1 个答案:

答案 0 :(得分:0)

最后,这是我的PHP代码问题,不使用json数据,用转换为josn替换post数据将解决此问题: $ payload = json_encode($ data);