【发布时间】:2017-01-05 15:14:56
【问题描述】:
我正在努力解决的快速问题。
我已经启动并运行了一个 REST Api,它可以与 Postman 一起正常运行,我正试图弄清楚如何使用来自 Xamarin Forms 的 Post-request(使用 HTTPClient)进行调用。
这是我当前的代码:
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)
【问题讨论】:
-
感谢您的编辑,我不确定是否应该包含真实的 API 地址,因为“最小的、可验证的示例”可能需要它。
-
其余服务应该返回什么?你最后的话有点混乱。您希望请求后 url 发生变化吗?
-
REST 服务只返回一个字符串,没有别的。我正在处理实时数据,所以我传入一个字符串并希望从服务中取回它。就像一个标记,以确保预定义的对象已插入数据库。
-
好吧,如果您的问题与该服务直接相关,则可能需要真正的 url。但相反,您正在努力实现发布请求。因此,放置真实的网址并不是最好的主意。
-
@TolgaEvcimen 正确。不过谢谢你! :)
标签: c# rest http xamarin dotnet-httpclient