2016-10-24 37 views
0

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

[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"=>"[email protected]", 
    "Password"=>"123qwe!#QWE", 
    "ConfirmPassword"=>"[email protected]#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; 

人知道这里发生了什么?

回答

0

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