HamapClient PostAsync在Xamarin.Forms上失败(StatusCode:404)

时间:2016-11-25 06:41:23

标签: heroku xamarin http-post xamarin.forms httpclient

var url = "http://domain.herokuapp.com/api/createuser";
var item = new { username = "kasunrt1", email = "dgggdgdg@test.com", password = "3333", tele = "123456789" };
var uri = new Uri(url);
var json = JsonConvert.SerializeObject(item);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var client = new HttpClient();
var result = await client.PostAsync(url, content); 

服务已启动&运行。它适用于浏览器和当我手动执行如下所示的API字符串时,邮递员。

http://domain.herokuapp.com/api/createuser/nameTest/testmail@gmail.com/346gf4/123456789

即使是以下代码也可以。

var result = await client.PostAsync("http://domain.herokuapp.com/api/createuser/nameTest/testmail@gmail.com/346gf4/123456789", null);

结果为404 {StatusCode:404,ReasonPhrase:' Not Found',Version:1.1,Content:System.Net.Http.StreamContent,Headers: { 服务器:牛仔 连接:保持活力 X-Powered-By:快递 X-Content-Type-Options:nosniff 日期:2016年11月25日星期五06:27:06 GMT 通过:1.1 vegur 内容类型:text / html;字符集= utf-8的 内容长度:28 }}

Heroku只收到以下请求。 2016-11-25T06:31:27.827923 + 00:00 heroku [router]:at = info method = POST path =" / api / createuser" host = domain.herokuapp.com request_id = 1cb51340-05a5-4503-acb5-9e3b45cdf393 fwd =" 61.245.163.5" dyno = web.1 connect = 1ms service = 71ms status = 404 bytes = 226

我似乎无法在这里找到错误。任何帮助将受到高度赞赏。 谢谢!

1 个答案:

答案 0 :(得分:2)

将数据发送到API / URL有两种选择。通过url-parameter或POST-parameter。您使用邮递员发送的网址会通过网址参数(whats the difference?)发送参数。

另一方面,您通过POST参数使用PostAsync的{​​{1}}方法发送参数。此值在请求正文中以内容类型指定的格式发送。

HttpClient然后尝试访问网址 http://domain.herokuapp.com/api/createuser (最后没有参数),此网址不存在,这就是您获取404的原因-error。

选项1:更改通过POST发送值的API方法

选项2:更改您在HttpClient变量

中设置值的请求

选项1是实现此目标的优先选择。因为你向api发布了一些东西。您的值需要在请求体中,而不是直接在URL中。因此,更改您的API,您的代码应该正常工作