var url = "http://domain.herokuapp.com/api/createuser";
var item = new { username = "kasunrt1", email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b9dddedededddedddef9cddccacd97dad6d4" rel="noreferrer noopener nofollow">[email protected]</a>", 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 字符串时,它适用于浏览器和 postman 。
http://domain.herokuapp.com/api/createuser/nameTest/[email protected]/346gf4/123456789
即使下面的代码也可以工作。
var result = await client.PostAsync("http://domain.herokuapp.com/api/createuser/nameTest/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="94e0f1e7e0f9f5fdf8d4f3f9f5fdf8baf7fbf9" rel="noreferrer noopener nofollow">[email protected]</a>/346gf4/123456789", null);
结果是 404 {StatusCode:404,ReasonPhrase:“未找到”,版本:1.1,内容:System.Net.Http.StreamContent, header : { 服务器:牛仔 连接:保持事件状态 X-Powered-By: Express X-内容类型选项:nosniff 日期:2016 年 11 月 25 日星期五 06:27:06 GMT 通过:1.1 素食者 内容类型: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
我似乎找不到这里出了什么问题。任何帮助将不胜感激。 谢谢!
最佳答案
有两个选项可将数据发送到 API/URL。通过 url 参数或使用 POST 参数。您使用 Postman 发送的 url 通过 url 参数 ( whats the difference? ) 发送参数。
另一方面,您可以使用 HttpClient
的 PostAsync
方法通过 POST 参数发送参数。该值以内容类型指定的格式在请求正文中发送。
HttpClient
然后尝试访问 URL http://domain.herokuapp.com/api/createuser (末尾没有参数),并且该 url 不存在,这就是您收到 404 错误的原因。
选项 1:更改通过 POST 发送值的 API 方法
选项 2:更改您的请求以在 url
变量中设置值
选项 1 是实现此目标的首选且正确的方法。因为你向你的 api 发布了一些东西。您的值需要位于请求正文中,而不是直接位于 url 中。因此,更改您的 API,您的代码应该可以工作
关于heroku - HttpClient PostAsync 在 Xamarin.Forms 上失败(状态代码 : 404),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40799110/