heroku - HttpClient PostAsync 在 Xamarin.Forms 上失败(状态代码 : 404)

标签 heroku xamarin http-post xamarin.forms httpclient

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? ) 发送参数。

另一方面,您可以使用 HttpClientPostAsync 方法通过 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/

相关文章:

http - 如何在使用 curl 的 POST 请求后获取 HTTP 响应 header 和正文

c - C中通过http POST发送二进制数据

mysql - 当heroku 让我的应用程序进入休眠状态时,如何防止 ClearDB (MySQL) 丢失

ruby-on-rails - 为什么 Travis 在部署到 Heroku 时无法连接使用 Redis cache_store?

android - 在 Xamarin for Android 中找不到维度资源

c# - 如何将值传递给上一个 ViewController

xcode - 在 Swift 中发出 Amazon Web Services S3 POST 请求

python - django 应用程序在 heroku TypeError : expected str, bytes 或 os.PathLike 对象(而不是函数)上崩溃

ruby-on-rails-3 - 为什么终端说 rails 没有突然安装?

xamarin - 如何解决 Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled 异常?