我正在使用c#,MVC编写的web api,它看起来像:
public IEnumerable<Day> Post([FromBody] string postObject)
使用fiddler或海报我可以发布到该REST服务,因为我的身体在发送JSON之前有一个=,类似
={"BillTypeId":"4","RestId":"1"}
使用改造来进行此调用我无法发送该初始值=并且我的请求看起来像
{"BillTypeId":"4","RestId":"1"}
这使得rest服务始终接收null参数。 你知道在我的json之前发送它的方法吗?因为我这样称呼休息
void postToGetDayList(@Body ResquestListenerBillType request, Callback<List<Day>> callback);
谢谢!!!
答案 0 :(得分:1)
如果您还没有解决问题,我想您可以参考以下代码:
的WebAPI:
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// POST api/values
public string Post([FromBody]string value)
{
return value;
}
}
改进WebAPIService:
public interface WebAPIService {
@GET("/api/values")
List<String> listValues();
@POST("/api/values")
String postValues(@Body String value);
}
致电webAPIService.postValues("BNK");
答案 1 :(得分:0)
在发送类转换为字符串之前,添加一个“拳头字符串并在最后一个字符串上添加一个”,然后发送正文 我的客户端API是:
[Put("/WebPage/{key}/")]
Task<string> PutWebPage([AliasAs("key")]string id, [Body]string value);
示例代码为:
WebPageModel webPageModelSave = new WebPageModel();
webPageModelSave = ObjectCopier.CloneClass(Public.CashEntity.webPageModel);
webPageModelSave.Address = uxLabel_AddressTitle.Text;
string codeingData = JsonConvert.SerializeObject(webPageModelSave);
codeingData = ArmanSerialize.CryptoString.Encrypt(codeingData, "5552552");
string resutlt = await Public.Helper.ApiServer.PutWebPage("123", "\""+codeingData+"\"");
并在服务器上删除“拳头和最后一个字符串,如下所示:
// PUT api/<controller>/5
[HttpPut("{id}/")]
public string Put(string id, [FromBody]string value)
{
string removeCotation = value.Remove(value.Length - 1, 1).Remove(0, 1);
string valueItem = ArmanSerialize.CryptoString.Decrypt(value, "5552552");
string baseUrl = Request.Host.Host;
baseUrl = baseUrl.ToLower().Replace("http://", "").Replace("https://", "");
var serverID = 123;
if (id.Replace("\"", "") == serverID.Replace("\"","") && !string.IsNullOrEmpty(valueItem))
{
WebPageModel webPageModel = new WebPageModel();
webPageModel = JsonConvert.DeserializeObject<WebPageModel>(valueItem);
EntityFrameworkCore.LogicLayer logicLayer = new EntityFrameworkCore.LogicLayer();
logicLayer.UpdateWebPageModel(webPageModel);
return JsonConvert.SerializeObject("OK");
}
else
{
//error
return JsonConvert.SerializeObject("Error");
}
}
我以xamarin形式对其进行了测试,并且asp.net core 3可以正常工作。