我正在努力解决的快速问题。
我有一个REST Api启动并运行,可以正常使用 Postman ,我正试图弄清楚如何使用Xamarin Forms(使用HTTPClient)的Post-request调用。< / p>
这是我目前的代码:
public CreateFoundation()
{
InitializeComponent();
lblInstructions.FontAttributes = FontAttributes.Bold;
lblInstructions.FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label));
btnCreate.Clicked += async (s, e) =>
{
var arb = await PostCreateFoundation(txtCreateFoundation.Text);
await DisplayAlert("Clicked", "I was clicked. Text was: " + arb, "OK");
};
}
public async Task<string> PostCreateFoundation(string arbitrary)
{
Debug.WriteLine("I'm in!");
var client = new System.Net.Http.HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
var content = new StringContent(arbitrary);
var response = await client.PostAsync("http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/", content);
var result = (response.Content.ReadAsStringAsync().Result);
return result;
}
当显示返回的string
(arb
)时,我可以看到uri是http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/.
,无论我发送什么作为任意字符串......
发送字符串“test”时生成的url是:
{MESSAGE“:”找不到与请求URI'http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/'匹配的HTTP资源。“}
编辑: API将任意字符串作为标记,将预定义对象添加到数据库,并将传递的任意字符串作为返回标记返回。
REST API函数头:
[HttpPost]
public string Insert(string s)
答案 0 :(得分:0)
当action参数是类似字符串的简单类型时,WebAPI会假定它应该在查询字符串中查找它。但是你将它传递到体内。尝试将API端的方法签名更改为:
public string Insert([FromBody]string s)
答案 1 :(得分:0)
删除最后的&#34; /&#34;在uri上
应该是:
Todd Meiner所说的