PHP POST api 在邮递员中工作,但在颤振应用程序中不工作

Posted

技术标签:

【中文标题】PHP POST api 在邮递员中工作,但在颤振应用程序中不工作【英文标题】:PHP POST api is working in postman but not working in flutter application 【发布时间】:2020-08-27 15:49:10 【问题描述】:

我使用 php 创建了 API,它按预期工作,并在我在 POSTMAN 中运行时返回结果。但是当我尝试在 Flutter 中调用相同的 API 时,它不起作用。下面是我的 Flutter 代码。

【问题讨论】:

你能在日志中显示错误吗? 你确定你应该对帖子数据进行 JSON 编码吗?检查此问题的答案:***.com/questions/61741007/… 否则,发布工作邮递员请求的屏幕截图。 (请求,而不是响应。) 我添加了有问题的邮递员回复。 【参考方案1】:

确保在您的 PHP 应用程序中启用了 CORS。这很可能是这个问题的原因。要添加 CORS 支持以便您可以从任何域访问,请将标头添加到响应中:Access-Control-Allow-Origin: *

对于域限制和有关 CORS 工作原理的其他信息,我会查看:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

【讨论】:

感谢 Brighton 的回复,请您指导如何在 php 中启用 CORS。我还上传了代码屏幕截图和邮递员请求,效果很好...... @Abhishek 看起来应该可以:enable-cors.org/server_php.html 或通过 apache 添加标头enable-cors.org/server_apache.html【参考方案2】:

我能解决问题,使用下面的代码。

static Future<String> addusernew(String firstName, String lastName, String email, String pass) async

try
  http.Response response = await http.post(url, body: 
    "action":_ADD_USER_ACTION,
    "firstname":firstName,
    "lastname":lastName,
    "email":email,
    "pass":pass
  );
  if(response.statusCode == 200)
    print("addUser Response 200 : $response.body");
    return response.body;
  else
    print("addUser Response Error : $response.body");
    return "Error Adding User";
  

catch(e) 
  return "Error Adding User : $e.toString()";

【讨论】:

以上是关于PHP POST api 在邮递员中工作,但在颤振应用程序中不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Http 401 错误,但在邮递员中工作,而不是在 xamarin 表单中工作

Django Rest Framework - response.set_cookie() 不在浏览器中设置 cookie,但在邮递员和可浏览 api 中工作

在颤振代码中添加授权标头会返回错误响应,而相同的请求在邮递员中工作正常

我正在从 express API 向颤振应用程序发送 GET 请求,但我没有得到任何输出

nextjs POST API 不能在实时环境中工作,但在本地环境中工作完美

请求 REST POST API 在 Postman 中工作,但在 Alamofire 中不起作用